Flex 2 Beta 3 : Sprites
In Flex 1.5, typically if we want to add a shape or graphic to the stage, we would make either make a call to createEmptyMovieClip or utilize the MovieClipLoader and add the graphic to the stage. However, in Flex 2 Beta 3, this has changed slightly. 在flex1.5中,如果我们要想向舞台添加一些图像或者形状,那么我们要么调用createEmptyMovieClip 要么利用MovieClipLoader 将所需的资源添加到舞台,在F2B3里面这有些小小的改动
In the Actionscript 3 spec, we’ve been introduced with a new class called the “Sprite” class. A Sprite object is similar to a movie clip, but does not have a timeline. Sprite is an appropriate base class for objects that do not require timelines. For example, Sprite would be a logical base class for user interface (UI) components that typically do not use the timeline. 在AS3规范里面,我们一直在介绍一个新的SPRITE类,SPRITE类和MC有些类似,但是它没有时间轴,因此它是那些不需要时间轴的UI对象的合适的基类。
When we add a child to the stage of type Sprite, in Flex 2 Beta 3, that child must be of type “IUIComponent” instead of flash.display::Sprite. To reproduce this error we’d do the following:
This is baaad… don’t do this! 如果我们要将一个子对象添加到舞台,那么它必须是IUIComponent而不是Sprite类,下面示范性的给出一断错误代码。不要学习它
publicfunctiondrawStuff(): void
{
varcircle1 : Sprite = newSprite()
circle1.graphics.beginFill(0xFFCC00 )
circle1.graphics.drawCircle(40, 40, 40)
circle1.buttonMode= true
addChild(circle1 )
} 以上为错误代码
This is good… please do this…
publicfunctiondrawStuff(): void
{
varref : UIComponent = newUIComponent()
varcircle1 : Sprite = newSprite()
circle1.graphics.drawCircle(40, 40, 40)
circle1.buttonMode= true
addChild(ref )
ref.addChild(circle1 )
} 以上为正确代码
For a more complete example try this: 以下是一个更加详细的代码
SpriteExample.as
package
{
importflash.display.Sprite
importflash.events.*;
publicclassSpriteExample extendsSprite
{
privatevarsize:uint = 100
privatevarbgColor:uint = 0xFFCC00;
privatevarbox:Sprite;
publicfunctionSpriteExample()
{
varchild:Sprite = newSprite()
child.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler)
child.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler)
draw(child)
box = Sprite(addChild(child))
}
privatefunctionmouseDownHandler(event:MouseEvent):void
{
trace(“mouseDownHandler”)
varsprite:Sprite = Sprite(event.target)
sprite.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler)
sprite.startDrag()
}
privatefunctionmouseUpHandler(event:MouseEvent):void
{
trace(“mouseUpHandler”)
varsprite:Sprite = Sprite(event.target)
sprite.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler)
sprite.stopDrag()
}
privatefunctionmouseMoveHandler(event:MouseEvent):void
{
trace(“mouseMoveHandler”)
event.updateAfterEvent()
}
privatefunctiondraw(sprite:Sprite):void
{
sprite.graphics.beginFill(bgColor)
sprite.graphics.drawRect(0, 0, size, size)
sprite.graphics.endFill()
}
}
}
SpriteExampleApplication.mxml
creationComplete=“onCreationComplete()”> creationComplete=“onCreationComplete()”>
import SpriteExample;
import mx.core.UIComponent;
import mx.controls.Alert;
public function onCreationComplete() : void
{
var spriteExample : SpriteExample = new SpriteExample();
var ref : UIComponent = new UIComponent();
addChild( ref );
ref.addChild( spriteExample );
}
]]> import SpriteExample;
import mx.core.UIComponent;
import mx.controls.Alert;
public function onCreationComplete() : void
{
var spriteExample : SpriteExample = new SpriteExample();
var ref : UIComponent = new UIComponent();
addChild( ref );
ref.addChild( spriteExample );
}
]]>
And this is what you should get… go on ahead, you can drag the orange box around. 可以自己体会一下
由{0}发表于 keunlee | 2006年06月28日, 07:47:22 上午 EDT
本文转自
http://cynergysystems.com/blogs/page/keunlee?entry=flex_2_beta_3_sprites
Flex 2 Beta 3 : Sprites
最新推荐文章于 2024-12-11 21:53:23 发布
在Flex2Beta3中,Sprite类替代了传统的MovieClip,用于不需要时间轴的UI组件。添加Sprite子对象时,需确保其类型为IUIComponent。本文提供了一个具体的例子,展示了如何使用Sprite类来创建可拖动的UI组件。
6284

被折叠的 条评论
为什么被折叠?



