Starling 处理屏幕尺寸

tarling 中的舞台对象starling.display.Stage将会在屏幕/页面尺寸改变时抛出一个类似的事件,叫做ResizeEvent.RESIZE,

允许你动态地处理屏幕改变时的逻辑。

此例子的基础上,增加屏幕尺寸改变时更新方块位置的功能。

package game
{
	import flash.geom.Rectangle;
	
	import starling.core.Starling;
	import starling.display.Quad;
	import starling.display.Sprite;
	import starling.events.Event;
	import starling.events.ResizeEvent;
/*	Starling 处理屏幕尺寸*/
	public class Game2 extends Sprite
	{
		private var q:Quad;
		private var rect:Rectangle = new Rectangle(0,0,0,0);
		public function Game2()
		{
			addEventListener(Event.ADDED_TO_STAGE, onAdded);
		}
		
		private function onAdded ( e:Event ):void
		{
			// listen to the event
			stage.addEventListener(ResizeEvent.RESIZE, onResize);
			q = new Quad(200, 200);
			q.color = 0x00FF00;
			q.x = stage.stageWidth - q.width >> 1;
			q.y = stage.stageHeight - q.height >> 1;
			addChild ( q );
		}
		private function onResize(event:ResizeEvent):void
		{
			// set rect dimmensions
			rect.width = event.width, rect.height = event.height;
			// resize the viewport
			Starling.current.viewPort = rect;
			// assign the new stage width and height
			stage.stageWidth = event.width;
			stage.stageHeight = event.height;
			// repositions our quad
			q.x = stage.stageWidth - q.width >> 1;
			q.y = stage.stageHeight - q.height >> 1;
		}
	}
		
}

一旦我们的SWF尺寸发生了改变,ResizeEvent.RESIZE事件都会被派发。新的尺寸将会被保存于ResizeEvent事件对象的相应属性中,

我们手动地将这些新尺寸赋值给stageWidth及stageHeight属性。之后我们就可以重新定位舞台中的内容了,所有位置依赖于舞台尺寸

的内容都可以保持相对正确的位置。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值