Starling初级开发一

    因为自己最近在尝试做页游到手游的移植,遭遇了性能瓶颈,通过了解发现还是有不少朋友在尝试Starling,并享受它带来的便利,所以才开始关注Starling。当然在深入了解之前也和其他目前比较流行的框架大体做了对比,类似于:ND2D和Are2D。具体的性能评测可以参考2D动画实现效率评测文章,里面分析的还是解释的比较透彻的。

  大体看了下Introduction Starling这本书,便开始按照示例进行了一些简单的测试。当然在开始就遭遇了不少小的问题,下面会一一罗列出来。先贴出项目代码:

 1、Starling的启动程序:

package
{
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	
	import starling.core.Starling;
	
	/**
	 * @ 模块功能:Starling启动模块
	 * @创建时间 Dec 25, 2012 3:29:08 PM
	 * @创建者:Mr_Right
	 */
	[SWF(width="1024" , height="600", backgroundColor=0x000000)]
	public class StarlingStart extends Sprite
	{
		private var _starling:Starling;
		public function StarlingStart()
		{
			addEventListener(Event.ADDED_TO_STAGE , onAddToStage);
		}
		
		private function onAddToStage(event:Event):void
		{
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;
			stage.frameRate = 60;
			
			addChild(new Stats());
			if(stage.stageWidth && stage.stageHeight)
			{
				startGame();
			}
			else
			{
				stage.addEventListener(Event.RESIZE , onResize);
			}
		}
		
		private function onResize(event:Event):void
		{
			if(stage.stageWidth && stage.stageHeight)
			{
				startGame();
			}
		}
		
		private function startGame():void
		{
			_starling = new Starling(Game , stage);
			_starling.start();
		}
	}
}

 2、主程序

package
{
	import starling.display.Quad;
	import starling.display.Sprite;
	import starling.events.Event;

	/**
	 * @ 模块功能:主游戏入口
	 * @创建时间 Dec 25, 2012 3:32:10 PM
	 * @创建者:Mr_Right
	 */
	public class Game extends Sprite
	{
		private var _quad:Quad; //四面体
		public function Game()
		{
			addEventListener(Event.ADDED_TO_STAGE , onAddToStage);
		}
		
		private function onAddToStage(event:Event):void
		{
			_quad = new Quad(200 , 200);
			_quad.setVertexColor(0 , 0xff0000);
			_quad.setVertexColor(1 , 0x00ff00);
			_quad.setVertexColor(2 , 0x0000ff);
			_quad.setVertexColor(3 , 0xff00ff);
			addChild(_quad);
			
			_quad.x = (stage.stageWidth - _quad.width) >> 1;
			_quad.y = (stage.stageHeight - _quad.height) >> 1;
		}
	}
}

 遇到的问题:

1、Game文件中的onAddToStage中的event类型,因为Starling的命名和本地API很多都是一致的,所以自己要注意,此处的事件类型其实应该是Starling自带的event类型。

2、Error:Error#3669:输入大小错误,at flash.display3D::Context3D/configureBackBuffer().该问题其实主要还是由stage本身引起的,因为stage的stageWidth和stageHeight为0了,所以变通下在Resize事件中进行Starling的初始化,具体可以参考第一段代码。具体为何stageWidth会为0,这个主要还是SO在嵌入Swf时导致那么一小会的时间造成的。

目前遇到的问题就这些,后面会持续更新

posted @ 2012-12-25 16:29  yurong3000  阅读(416)  评论(0)    收藏  举报