动画
动画是所有游戏的必要组成部分,Starling能帮助你快速的制作简单动画。
如果你想了解一下,那么这里有两种动画类型。其中一种动画是你知道即将发生什么,比如当消息提示框被关闭,或者某些界面元素被移动出屏幕。另外一种动画更为灵活,例如玩家人物的移动。这些动画能够在每一帧改变他们的状态,同时这些动作是受到玩家控制的。
下面我们来看看后面这种动画类型,动态动画。
EnterFrame事件
在一些游戏yiinqing中,你能够通过调用“run-loop”类似的命令。这是一个无限循环,每次循环都会处理场景中的所有元素。在Starling中,我们采用的是树状显示结构,所以这种方式对于我们来说没有太多的意义。你可能在你的游戏中定义了许多不同的可视化元素,并且这些元素在某些时刻应该进行一些操作。
这时你需要EnterFrame时间。这个事件适用于所有的显示元素,并且再每一帧都会触发。下面用一段简单的带来来演示如何使用它:
// e.g. in the constructor
this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
// the corresponding event listener
private function onEnterFrame(event:EnterFrameEvent):void
{
trace("Time passed since last frame: " + event.passedTime);
enemy.moveBy(event.passedTime * enemy.velocity);
}
onEnterFrame方法会在每帧都调用一次,并且你通过接收这个事件来对当前帧的状态进行改变。比如你能移动你的士兵,或者让场景中的雪花下落几个像素。
Tween
现在我们来介绍另外一种动画。使用这种动画我们能很容易的实现一些平滑的动画效果,例如旋转,缓动等等。Starling拥有一些简单的动画类型。这些动画可以用到你所有的对象当中,只要你改变的属性是Number,int,uint类型。
这些对象之所以能够产生动画,完全依赖于"Tween"。"Tween"来源于手工动画,当你设定了一个动画的关键帧之后,其中的过渡帧会被“tween”自动完成绘制。
下面我们来看一个范例:
var tween:Tween = new Tween(msgBox, 0.5);
tween.animate("y", 20);
tween.animate("scaleX", 2);
tween.animate("scaleY", 2);
tween.animate("alpha", 0);
这个动画是将一个msgBox放大两倍尺寸,并且降低了它的透明度,直到它的透明度变为完全透明。这个动画运行需要半秒。如果你没有设置启动状态,那么这个动画会从当前状态开始运行。
正如你看到的,一个动画可以同时修改多个属性,并且你能用一个Tween对象控制多个动画对象。
注意,由于你经常使用缓动位置或者改变尺寸操作,那么你可以用下面的方法更加方便的进行操作:
tween.moveTo(0, 20); // animating "x" and "y"
tween.scaleTo(2); // animating "scaleX" and "scaleY"
tween.fadeTo(0); // animating "alpha"
这里还有更多的补间动画类型,例如从快到慢,或者从慢到快。
下面这些都是可以使用的类型: (默认的补间动画类型是'linear')
除此之外,你还可以设置延迟执行,或者设置执行后回调函数。
var tween:Tween = new Tween(msgBox, 0.5, Transitions.EASE_IN);
tween.delay = 2;
tween.onComplete = function():void { trace("tween complete!"); };
但是现在你看不到任何动画,因为一个tween对象所执行动画的首要前提是你必须对juggler对象进行操作。
Juggler
juggler是所有的动画的控制器(这里是所有动画的接口)。Starling在初始化的时候会默认生成一个juggler事例。下面的方法是使用juggler来启动动画。
Starling.juggler.add(tween);
I通常情况下,简单的处理将会出现意想不到的问题。
不过有时候你想对一些不同的容器进行分组的哦光滑。例如你某些游戏动画发生,游戏中的舞台区域可能会改变。当用户点击一个退出按钮的时候,你需要暂停你游戏中所有元素的动画,同事弹出一个消息提示框,告诉你现在游戏已经暂停,并且询问用户是否现在退出游戏。
这种情况下,使用juggler控制是非常方便的。比如一个退出按钮可以先暂停一些动画。这时候游戏的所有状态将被冻结,然后弹出消息提示框,这些都可以使用juggle来进行操作的方法。
When you create a custom juggler, all you have to do is to call its “advanceTime” method in every frame. I recommend using jugglers the following way: 当你创建了一个自定义juggler,那么你必须在每一帧上调用“advanceTime”方法。使用方法如下:
// In your main game class, listen to Event.ENTER_FRAME:
private function onEnterFrame(event:EnterFrameEvent):void
{
if (activeMsgBox)
// message box is visible, wait for user input
else
gameArea.advanceTime(event.passedTime);
}
// the game area class advances its juggler in the
// "advanceTime" method
private function advanceTime(passedTime:Number):void
{
gameJuggler.advanceTime(passedTime);
}
上面的代码已经将游戏的动画部分和消息提示框部分分离。
另外一种方法是你不在通过juggler来控制Tween补间动画。你需要让你的类实现IAnimatable接口,这样你就可以添加juggler,这个接口的使用方法如下:
function advanceTime(time:Number):void
通过这种方法,你可以创建一个简单的类似于MovieClip的类,在“advanceTime”方法中,它可以帮你完成贴图变化。在启动这个影片的时候你只需要为他添加一个juggler即可。
现在引发了另外一个值得关注的问题,我们如何从juggler中移除一个对象呢?
补间一旦完成,他们会从juggler中被自动删除。但对数对象是如此,但是像MovieClip类,当你决定他不在执行动画的时候,他才会被移除。
如果你想自定义类,并且实现juggler中自动删除功能,那么需要监听“Event.REMOVE_FROM_JUGGLER”事件。但是juggler监听到这个事件的时候对象将被删除。
回调函数
还有另外一种动画类型,有时你想在未来做些什么事情。比如玩家用光了他的所有技能能量,那么你不希望立刻让游戏停止,你可能希望弹出一个"gameOver"的提示,然后在三秒钟之后退回到主画面。
juggler能够非常容易的做到这一点。你需要先弹出gameover,并且让游戏暂停。然后你只要暂停所有动画并让gameover方法延迟一段时间就可以了。
你只需要下面这样的语句就可以做到这一点:
Starling.juggler.delayCall(gameOver, 3);
“gameOver”函数是在3秒钟之后被调用的函数(当时间到的时候juggler会自动调用这个函数)。
来自:http://www.starlinglib.com/wiki/StarlingManual:%E5%8A%A8%E7%94%BB
相关推荐
5. **动画系统**:支持基于时间的动画,可以轻松实现平滑的帧动画或逐帧动画。 6. **物理引擎集成**:Starling与Box2D等物理引擎有良好的兼容性,可轻松添加物理效果到游戏中。 7. **事件系统**:遵循ActionScript...
Starling是一个高效、跨平台的ActionScript 3库,专门设计用于游戏开发,它利用硬件加速来提供流畅的动画效果。Graphics扩展则进一步提升了Starling的功能,为开发者提供了更多高级的绘图选项。 首先,让我们深入...
4. **扩展性**:Starling提供了一套基础架构,允许开发者轻松添加自定义的渲染效果和扩展功能。 二、Hungry Hero游戏开发 "Hungry Hero"很可能是一款基于Starling开发的2D动作或冒险游戏。在这样的游戏中,玩家...
在开发过程中,开发者可能利用了Starling的特性来创建动画效果,如星星的出现、碰撞检测以及消除时的爆炸特效,这些都需要对图形渲染和事件处理有深入理解。 首先,我们要理解Starling框架的基本结构。它使用了...
在Starling框架下,游戏的逻辑处理、碰撞检测、动画效果等都可以得到优化。Starling支持矢量图形,这意味着游戏中的飞机、子弹、敌人等元素可以实现高质量的缩放,同时保持流畅的帧率。 “Starling”是基于AS3的跨...
"Starling中文API"是针对这个框架的中文文档,帮助开发者理解和使用Starling的各项功能。 API(Application Programming Interface)是一组预先定义的函数、类、对象和协议,用于构建软件应用。Starling中文API1.2....
9. **动画系统**:Starling提供了强大的时间轴和补间动画功能,让开发者可以轻松创建复杂的动画序列。 10. **调试与性能分析**:手册还将指导读者如何使用内置的调试工具和第三方工具,如Greensock的Profiler,来...
Starling 使用Stage3D技术,能够将2D渲染优化到接近原生代码的速度,这使得它成为开发复杂的动画应用和游戏的理想选择。 Starling 的核心特性包括: 1. **硬件加速**:利用GPU进行图形处理,提供流畅的60帧每秒的...
Starling的核心功能在于它提供了一个跨平台的API,使开发者可以使用ActionScript 3或Haxe来编写游戏,同时享受到硬件加速的益处。Stage3D是Flash Player和Adobe AIR中的一个低级图形API,它允许开发者直接与GPU进行...
Starling支持纹理 atlases,可以轻松地管理大量的游戏图像资源,并提供了舞台渲染和动画功能。在本教程中,Starling将用于绘制游戏场景和角色,实现流畅的图形效果。 3. **Box2D**:Box2D是一个流行的开源2D物理...
Starling还提供了用于动画制作的Tweens类、RenderTexture来渲染动态内容、TextureAtlas用于优化纹理管理,以及Juggler用于管理动画。 此外,Starling提供了多种UI组件,包括按钮(Button)、文本字段(TextField)...
5. **动画系统**:Starling内置了一个强大的动画系统,可以方便地实现复杂的动画效果。 #### 五、分层限制 Starling为了保持高性能,对显示列表的层级数量有所限制。默认情况下,最多支持1024个层级。过多的层级...
- **插件和扩展**:开发者可以通过编写插件来增强Starling的功能。 综上所述,Starling框架是一个强大的2D游戏开发工具,它不仅适用于游戏开发,也可以用于其他类型的2D应用开发。通过学习和掌握Starling框架的知识...
在提供的压缩包中,`RELEASENOTES.md` 文件包含了Feathers 2.0.0的主要更新和改进,这对于升级现有项目或者了解新功能至关重要。`LICENSE.md` 文件则阐述了该库的授权条款,通常采用MIT或Apache等开源许可证,允许...
- **简化开发过程**:Starling将复杂的Stage3D API进行了抽象和封装,使得开发者可以轻松利用Stage3D的功能。 - **适用范围广**:除了游戏开发外,Starling也可以应用于UI组件制作等其他场景。 - **直观易学**:对于...
无论是游戏还是其他类型的图形应用,Starling都能提供强大的技术支持和丰富的功能集,使得开发者能够更加专注于创造有趣和创新的内容,而无需过多关注技术细节。随着社区的不断发展和完善,Starling将持续成为AS3...
新加了几个功能,增加了桌面版同时还有安卓版。 1.设定初始MC数量; 2.可动态添加一定数量的MC; 3.单指拖动和双指缩放; 4.整张Sheet的预览; 5.UI做了一些调整,比如增大了按钮,改变了文字样式和蓝框的粗细等等,...
Starling是一个由Daniel Slopov开发的高性能2D游戏开发库,它利用硬件加速的Stage3D API来提供流畅的动画体验。在Air环境中,Starling能够与Flex或Flash的ActionScript 3接口无缝集成,使开发者能够创建跨平台的移动...
通过上述介绍,可以看出 **Starling** 是一个功能强大且灵活多变的 **2D** 开发框架,非常适合那些希望利用 **GPU** 加速技术提升应用程序性能而又不想陷入底层技术细节的开发者。无论是对于新手还是经验丰富的...