Starling入门

上一期介绍了基于starling的AS3在移动开发上的大致情况,这一期我向各位新手朋友介绍starling的使用,建立第一个可以运行的starling程序,让大家初步了解starling。

需要用到的工具:Starling 1.5,flash builder 4.7

1、首先在flash builder 4.7里边新建一个AS手机项目,然后构建路径将starling1.5的包添加进去,就可以用了。

2、接着就可以写代码了,这里直接给大家分析starling的入口怎么写,下面分析代码

(首先是入口类,也就是项目的主文件)

package
{import flash.desktop.NativeApplication;import flash.display.Bitmap;import flash.display.Sprite;import flash.events.Event;import flash.filesystem.File;import flash.geom.Rectangle;import flash.system.Capabilities;import starling.core.Starling;import starling.events.Event;import starling.textures.Texture;import starling.utils.AssetManager;import starling.utils.RectangleUtil;import starling.utils.ScaleMode;import starling.utils.formatString;[SWF(width="320", height="480", frameRate="30", backgroundColor="#000000")]public class starlingTutorial extends Sprite{private var mStarling:Starling;public function starlingTutorial(){var stageWidth:int  = 320;var stageHeight:int = 480;var iOS:Boolean = Capabilities.manufacturer.indexOf("iOS") != -1;//判断是否为IOS设备Starling.multitouchEnabled = true;  // 开启多点触摸模式Starling.handleLostContext = !iOS;  // 是否开启丢失内容修复功能,官方推荐ios不开启,因为会占用很多内存,主要用于手机进入屏保和进到后台后,有些有机会禁止渲染,这是程序就会丢失一些内容,开启这个功能就会程序就会修复丢失的内容//接下来这个viewPort是视口显示方式,会在稍后实例化starling的是传入,这里是让程序在设备上保持宽高比,并显示全部,进行缩放,所以程序在比320x480小的设备上屏幕会出现黑边,大家可以更改里边的参数进行变化var viewPort:Rectangle = RectangleUtil.fit(new Rectangle(0, 0, stageWidth, stageHeight), new Rectangle(0, 0, stage.fullScreenWidth, stage.fullScreenHeight), ScaleMode.SHOW_ALL, iOS);//下面是根据视口选择材质分辨率,1是正常,2是高清(前提是你准备了两套素材),并且创建材质管理器<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">assets,将游戏素材添加到enqueue队列中,等待加载,这里是借助官方例子来讲解,我们这里用不到素材</span>var scaleFactor:int = viewPort.width < 480 ? 1 : 2; var appDir:File = File.applicationDirectory;var assets:AssetManager = new AssetManager(scaleFactor);assets.verbose = Capabilities.isDebugger;assets.enqueue(appDir.resolvePath("assets/audio"),appDir.resolvePath(formatString("assets/fonts/{0}x", scaleFactor)),appDir.resolvePath(formatString("assets/textures/{0}x", scaleFactor)));//这里是加载素材的方法,可以放到Game类里边去实现
<p class="p1"><span style="font-size: 12px;"> </span><span class="s5" style="font-size: 12px;">if</span><span class="s2" style="font-size: 12px;">(</span><span class="s6" style="font-size: 12px;">ratio</span><span class="s1" style="font-size: 12px;">==</span><span style="font-size: 12px;"> 1</span><span class="s2" style="font-size: 12px;">)</span></p><p class="p1"><span class="s4">            //       </span>Starling<span class="s1">.</span>juggler<span class="s1">.</span>delayCall<span class="s2">(</span><span class="s3">function</span><span class="s2">()</span><span class="s4">:</span><span class="s5">void</span></p><p class="p2"><span style="white-space: pre;"></span>         //           <span class="s2">{</span></p><p class="p1"><span class="s4"><span style="white-space: pre;"></span>          //             </span>mLoadingProgress<span class="s1">.</span>removeFromParent<span class="s2">(</span><span class="s5">true</span><span class="s2">)</span><span class="s4">;</span></p><p class="p2"><span style="white-space: pre;"></span>        //                <span class="s6">mLoadingProgress</span> <span class="s1">=</span> <span class="s5">null</span>;</p><p class="p2">           <span style="white-space: pre;"> </span><span style="white-space: pre;"></span>//<span style="white-space: pre;"></span>      <span class="s6">showMainMenu</span><span class="s2">()</span>;</p><p class="p2"><span style="white-space: pre;"></span>        //            <span class="s2">}</span><span class="s1">,</span> 0.15<span class="s2">)</span>;</p><p class="p2">          <span style="white-space: pre;"></span>//  <span class="s2">})</span>;</p><span style="white-space:pre">   </span>//接下来便可以启动starling了,Game是游戏主类(就是游戏的入口),一会儿会单独写 
<span style="white-space:pre">  </span>mStarling = new Starling(Game, stage, viewPort); 
<span style="white-space:pre">  </span>mStarling.stage.stageWidth = stageWidth; // 这样设置可以保证所有设备上程序的显示都320x480 
<span style="white-space:pre">  </span>mStarling.stage.stageHeight = stageHeight; //同上 
<span style="white-space:pre">  </span>mStarling.simulateMultitouch = false; //是否开启模拟多点触摸,如果开启,则在电脑上按住ctrl或cmd+shift可以模拟 
<span style="white-space:pre">  </span>mStarling.enableErrorChecking = false; //当3D渲染过程中发生错误,是否开启报错,如果想关注渲染情况可以开启 
<span style="white-space:pre">  </span>//下面创建游戏主类监听,将Game作为主游戏类传给<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;">starling </span>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;"><span style="white-space:pre">      </span>mStarling.addEventListener(starling.events.Event.ROOT_CREATED, function():void { </span>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;"><span style="white-space:pre">      </span>var game:Game = mStarling.root as Game; </span>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;"><span style="white-space:pre">      </span>var bgTexture:Texture = Texture.fromEmbeddedAsset(backgroundClass, false, false, scaleFactor); </span>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;"><span style="white-space:pre">      </span>game.start(bgTexture, assets); mStarling.start(); });</span>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;"> <span style="white-space:pre">     </span>NativeApplication.nativeApplication.addEventListener( flash.events.Event.ACTIVATE, function (e:*):void { mStarling.start(); }); </span>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;"><span style="white-space:pre">      </span>NativeApplication.nativeApplication.addEventListener( flash.events.Event.DEACTIVATE, function (e:*):void { mStarling.stop(true); }); </span>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;"><span style="white-space:pre">      </span>} </span>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;"><span style="white-space:pre">  </span>}</span>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: 12px;"> }</span>

下面是Game游戏主类:

package
{import starling.display.Button;import starling.display.Sprite;import starling.textures.Texture;public class Game extends Sprite{public function Game(){super();}public function start():void{var btn:Button=new Button(Texture.fromColor(100,50),"第一个starling程序");btn.x=320/2-btn.width/2;btn.y=480/2-btn.height/2;addChild(btn);}}
}

我们在start方法里边创建了一个按钮,启动程序后会在模拟器屏幕中间显示一个可以点击的按钮,OK!我们的第一个starling程序就可以跑出来了!

另外,如果出现这种情况:

请将配置文件中的渲染方式改成direct,比如我的项目配置文件叫starlingTuorial-app.xml,这个文件是你创建手机项目的时候,会一并创建,主要是程序的一些配置信息,其中有一项是:

 <!-- The render mode for the app (either auto, cpu, gpu, or direct). Optional. Default auto --><renderMode>direct</renderMode>

一开始是注释了的,开启后,把值改成direct就可以了。

(新手入门)AS3基于starling引擎移动开发之Starling入门相关推荐

  1. (新手入门)AS3基于Starling引擎移动开发之starling简单碰撞

    本期介绍游戏中经常要用到的碰撞,作为新手入门级碰撞介绍,我准备介绍利用Rectangle类实现碰撞,这个方法可以实现不是很精确的碰撞,但是如果用活了,基本可以满足大部分游戏碰撞的需求. 在starli ...

  2. java微博开发_【新手入门篇】新浪微博应用开发之Java入门篇

    新浪微博应用开发之Java篇 2012年11月11日星期日 一.开发流程简介: 2.  在以下地址创建一个应用,假设创建一个桌面应用: 3.  进入管理中心,查看并记住应用ID和密码: 4.  在&q ...

  3. 【新手入门篇】新浪微博应用开发之Java入门篇

    新浪微博应用开发之Java篇 2012年11月11日星期日 一.开发流程简介: 1.  访问http://open.weibo.com/注册成为开发者 2.  在以下地址创建一个应用,假设创建一个桌面 ...

  4. Swift Web 开发之 Vapor - 入门(一)

    简介 Vapor 是一个基于纯 Swift 构建出的 Web 开发框架,目前可以运行在 macOS 和 Ubuntu ,用于构建出漂亮易用的网站或者 API 服务. 官方称是用的最多的 Swift w ...

  5. 新浪微博应用开发之Java入门篇

    新浪微博应用开发之Java篇 2016-10-30 一.开发流程简介: 1.  访问http://open.weibo.com/注册成为开发者 2.  在以下地址创建一个应用,假设创建一个桌面应用: ...

  6. Unity开发之-Unity入门简介(近万字攻略)

    前言 大家好,我是一个Unity的程序员,从这篇开始我会持续更新学习Unity的基本,去帮助想要学习unity的小伙伴,有兴趣的同学可以跟着我一起学习Unity,下面,我们将要开始了解Unity以及想 ...

  7. 图像化界面开发之QT入门

    想要完成一个应用程序的开发,通常还需要一个可视化界面,QT就是可以帮助我们快速开发出可视化界面的一款工具,而利用QT实现页面布局,一般有两种方式,即通过qtdesigner和通过纯代码构建,第一种方式 ...

  8. Unity3D AR开发之Vuforia入门学习

    引言:2016年的AR游戏Pokemon GO火遍全球(除了中国),让我第一次了解到AR的世界.神奇的虚拟对象出现在现实世界中,感觉小时候的游戏王这类的动画可以成为现实. 最近小生学习了高通的Vufo ...

  9. Android之基于xmpp openfire smack开发之Android消息推送技术原理分析和实践[4]

    http://blog.csdn.net/shimiso/article/details/8156439 前面几篇给大家系统讲解的有关xmpp openfire smack asmack相关的技术和使 ...

最新文章

  1. 【bzoj2751】[HAOI2012]容易题(easy) 数论-快速幂
  2. TLS回调函数(2)
  3. 代码执行漏洞-无字母数字RCE-create_function()
  4. NLB+Cluster(一)
  5. 光纤中继器的防雷及日常维护方法介绍
  6. 安卓手机阅读器_乐应用|安卓手机本地阅读的不二之选
  7. 【CodeForces - 987C 】Three displays (dp,最长上升子序列类问题,三元组问题)
  8. super关键字 java 1614785870
  9. 漫步微积分三十五——弧长
  10. 阿克苏计算机考试成绩查询,阿克苏高考成绩查询系统2021
  11. Centos7升级gcc版本方法之一使用scl软件集
  12. Apache的下载安装(主要说的 64位)及问题
  13. java电商项目简历_一文解析从写简历,到面试、谈薪酬技巧和防坑指南
  14. 伺服电机算功率基本公式_伺服电机功率计算选型.ppt
  15. 【洛谷试炼场】普及练习场——排序
  16. 如何只用HTML创建一个时间计划表?
  17. 硬盘出现坏道的处理方法
  18. 360度全景标定方法_一种360度全视角鸟瞰全景行车辅助标定方法与流程
  19. DxO PhotoLab for Mac(照片编辑软件)
  20. VR全景拍摄时我们应该注意哪些技巧?

热门文章

  1. 2023升级运营版uniapp多商户商城小程序+H5+APP+商家入驻短视频社区种草直播阶梯拼团源码
  2. Live回顾:软件定义汽车时代,智能汽车电子构架如何变革迎接数字化重塑?(深度)...
  3. 北京大兴计算机学校排名2015,北京大兴区小学排名
  4. 如何使用HDHomeRun在计算机,游戏机和其他设备上观看直播电视
  5. angular2.0实现年月日自定义三级联动查询
  6. Glide核心设计二:缓存管理
  7. Html走马灯效果实现
  8. C语言折半查找算法及代码实现
  9. leaflet+geoJSON实现绘制区域边界和边界高亮效果
  10. Please specify the container for the chart!