语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9, AIR 1.0, Flash Lite 4 |
Sprite 对象与影片剪辑类似,但没有时间轴。Sprite 是不需要时间轴的对象的相应基类。例如,Sprite 将是通常不使用时间轴的用户界面 (UI) 组件的逻辑基类。
Sprite 类是 ActionScript 3.0 中新引入的类。它提供了 MovieClip 类功能的替代功能,此替代功能保留了 ActionScript 以前版本的所有功能以提供向后兼容性。
属性 | 由以下参数定义 | ||
---|---|---|---|
accessibilityImplementation : AccessibilityImplementation
InteractiveObject 实例的当前辅助功能实现 (AccessibilityImplementation)。 | InteractiveObject | ||
accessibilityProperties : AccessibilityProperties
此显示对象的当前辅助功能选项。 | DisplayObject | ||
alpha : Number
表示指定对象的 Alpha 透明度值。 | DisplayObject | ||
blendMode : String
BlendMode 类中的一个值,用于指定要使用的混合模式。 | DisplayObject | ||
blendShader : Shader [只写]
设置用于混合前景和背景的着色器。 | DisplayObject | ||
buttonMode : Boolean
指定此 sprite 的按钮模式。 | Sprite | ||
cacheAsBitmap : Boolean
如果设置为 true,则 Flash 运行时将缓存显示对象的内部位图表示形式。 | DisplayObject | ||
cacheAsBitmapMatrix : Matrix
如果为非 null,则 Matrix 对象会定义显示对象在 cacheAsBitmap 设置为 true 时的呈现方式。 | DisplayObject | ||
constructor : Object
对类对象或给定对象实例的构造函数的引用。 | Object | ||
contextMenu : NativeMenu
指定与此对象相关联的上下文菜单。 | InteractiveObject | ||
doubleClickEnabled : Boolean
指定此对象是否接收 doubleClick 事件。 | InteractiveObject | ||
dropTarget : DisplayObject [只读]
指定拖动 sprite 时经过的显示对象,或放置 sprite 的显示对象。 | Sprite | ||
filters : Array
包含当前与显示对象关联的每个滤镜对象的索引数组。 | DisplayObject | ||
focusRect : Object
指定此对象是否显示焦点矩形。 | InteractiveObject | ||
graphics : Graphics [只读]
指定属于此 sprite 的 Graphics 对象,在此 sprite 中可执行矢量绘图命令。 | Sprite | ||
height : Number
表示显示对象的高度,以像素为单位。 | DisplayObject | ||
hitArea : Sprite
指定一个 sprite 用作另一个 sprite 的点击区域。 | Sprite | ||
loaderInfo : LoaderInfo [只读]
返回一个 LoaderInfo 对象,其中包含加载此显示对象所属的文件的相关信息。 | DisplayObject | ||
mask : DisplayObject
调用显示对象被指定的 mask 对象遮罩。 | DisplayObject | ||
metaData : Object
如果元数据是通过 PlaceObject4 标记与此 DisplayObject 的实例一起存储在 SWF 文件中的,则获取 DisplayObject 实例的元数据对象。 | DisplayObject | ||
mouseChildren : Boolean
确定对象的子级是否支持鼠标或用户输入设备。 | DisplayObjectContainer | ||
mouseEnabled : Boolean
指定此对象是否接收鼠标或其他用户输入、消息。 | InteractiveObject | ||
mouseX : Number [只读]
表示此鼠标或用户输入设备位置的 x 坐标,以像素为单位。 | DisplayObject | ||
mouseY : Number [只读]
表示此鼠标或用户输入设备位置的 y 坐标,以像素为单位。 | DisplayObject | ||
name : String
表示 DisplayObject 的实例名称。 | DisplayObject | ||
needsSoftKeyboard : Boolean
指定当该 InteractiveObject 实例获得焦点时,是否显示虚拟键盘(显示在屏幕上的软键盘)。 | InteractiveObject | ||
numChildren : int [只读]
返回此对象的子项数目。 | DisplayObjectContainer | ||
opaqueBackground : Object
指定显示对象是否由于具有某种背景颜色而不透明。 | DisplayObject | ||
parent : DisplayObjectContainer [只读]
表示包含此显示对象的 DisplayObjectContainer 对象。 | DisplayObject | ||
root : DisplayObject [只读]
对于加载的 SWF 文件中的显示对象,root 属性是此 SWF 文件所表示的显示列表树结构部分中的顶级显示对象。 | DisplayObject | ||
rotation : Number
表示 DisplayObject 实例距其原始方向的旋转程度,以度为单位。 | DisplayObject | ||
rotationX : Number
表示 DisplayObject 实例相对于 3D 父容器距离其原始方向的 x 轴旋转(以度为单位)。 | DisplayObject | ||
rotationY : Number
表示 DisplayObject 实例相对于 3D 父容器距离其原始方向的 y 轴旋转(以度为单位)。 | DisplayObject | ||
rotationZ : Number
表示 DisplayObject 实例相对于 3D 父容器距离其原始方向的 z 轴旋转(以度为单位)。 | DisplayObject | ||
scale9Grid : Rectangle
当前有效的缩放网格。 | DisplayObject | ||
scaleX : Number
表示从注册点开始应用的对象的水平缩放比例(百分比)。 | DisplayObject | ||
scaleY : Number
表示从对象注册点开始应用的对象的垂直缩放比例(百分比)。 | DisplayObject | ||
scaleZ : Number
表示从对象的注册点开始应用的对象的深度缩放比例(百分比)。 | DisplayObject | ||
scrollRect : Rectangle
显示对象的滚动矩形范围。 | DisplayObject | ||
softKeyboard : String
控制软键盘的外观。 | InteractiveObject | ||
softKeyboardInputAreaOfInterest : Rectangle
定义当显示软键盘时应在屏幕上保留的区域(在 iOS 上不支持)。 | InteractiveObject | ||
soundTransform : flash.media:SoundTransform
控制此 sprite 中的声音。 | Sprite | ||
stage : Stage [只读]
显示对象的舞台。 | DisplayObject | ||
tabChildren : Boolean
确定对象的子项是否支持 Tab 键。 | DisplayObjectContainer | ||
tabEnabled : Boolean
指定此对象是否遵循 Tab 键顺序。 | InteractiveObject | ||
tabIndex : int
指定 SWF 文件中的对象按 Tab 键顺序排列。 | InteractiveObject | ||
textSnapshot : flash.text:TextSnapshot [只读]
返回此 DisplayObjectContainer 实例的 TextSnapshot 对象。 | DisplayObjectContainer | ||
transform : flash.geom:Transform
一个对象,具有与显示对象的矩阵、颜色转换和像素范围有关的属性。 | DisplayObject | ||
useHandCursor : Boolean
布尔值,表示当指针滑过 buttonMode 属性设置为 true 的 sprite 时是否显示指针手形(手形光标)。 | Sprite | ||
visible : Boolean
显示对象是否可见。 | DisplayObject | ||
width : Number
表示显示对象的宽度,以像素为单位。 | DisplayObject | ||
x : Number
表示 DisplayObject 实例相对于父级 DisplayObjectContainer 本地坐标的 x 坐标。 | DisplayObject | ||
y : Number
表示 DisplayObject 实例相对于父级 DisplayObjectContainer 本地坐标的 y 坐标。 | DisplayObject | ||
z : Number
表示 DisplayObject 实例相对于 3D 父容器沿 z 轴的 z 坐标位置。 | DisplayObject |
方法 | 由以下参数定义 | ||
---|---|---|---|
Sprite()
创建一个新的 Sprite 实例。 | Sprite | ||
将一个 DisplayObject 子实例添加到该 DisplayObjectContainer 实例中。 | DisplayObjectContainer | ||
将一个 DisplayObject 子实例添加到该 DisplayObjectContainer 实例中。 | DisplayObjectContainer | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。 | EventDispatcher | ||
表示安全限制是否会导致出现以下情况:在列表中忽略了使用指定 point 点调用 DisplayObjectContainer.getObjectsUnderPoint() 方法时返回的所有显示对象。 | DisplayObjectContainer | ||
确定指定显示对象是 DisplayObjectContainer 实例的子项还是该实例本身。 | DisplayObjectContainer | ||
将事件调度到事件流中。 | EventDispatcher | ||
返回一个矩形,该矩形定义相对于 targetCoordinateSpace 对象坐标系的显示对象区域。 | DisplayObject | ||
返回位于指定索引处的子显示对象实例。 | DisplayObjectContainer | ||
返回具有指定名称的子显示对象。 | DisplayObjectContainer | ||
返回 DisplayObject 的 child 实例的索引位置。 | DisplayObjectContainer | ||
返回对象的数组,这些对象位于指定点下,并且是该 DisplayObjectContainer 实例的子项(或孙子项,依此类推)。 | DisplayObjectContainer | ||
返回一个矩形,该矩形根据 targetCoordinateSpace 参数定义的坐标系定义显示对象的边界,但不包括形状上的任何笔触。 | DisplayObject | ||
将 point 对象从舞台(全局)坐标转换为显示对象的(本地)坐标。 | DisplayObject | ||
将二维点从舞台(全局)坐标转换为三维显示对象的(本地)坐标。 | DisplayObject | ||
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。 | EventDispatcher | ||
表示对象是否已经定义了指定的属性。 | Object | ||
计算显示对象的边框,以确定它是否与 obj 显示对象的边框重叠或相交。 | DisplayObject | ||
计算显示对象,以确定它是否与 x 和 y 参数指定的点重叠或相交。 | DisplayObject | ||
表示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | ||
将三维显示对象的(本地)坐标的三维点转换为舞台(全局)坐标中的二维点。 | DisplayObject | ||
将 point 对象从显示对象的(本地)坐标转换为舞台(全局)坐标。 | DisplayObject | ||
表示指定的属性是否存在、是否可枚举。 | Object | ||
从 DisplayObjectContainer 实例的子列表中删除指定的 child DisplayObject 实例。 | DisplayObjectContainer | ||
从 DisplayObjectContainer 的子列表中指定的 index 位置删除子 DisplayObject。 | DisplayObjectContainer | ||
从 DisplayObjectContainer 实例的子级列表中删除所有子 DisplayObject 实例。 | DisplayObjectContainer | ||
从 EventDispatcher 对象中删除侦听器。 | EventDispatcher | ||
显示虚拟键盘。 | InteractiveObject | ||
更改现有子项在显示对象容器中的位置。 | DisplayObjectContainer | ||
设置循环操作动态属性的可用性。 | Object | ||
允许用户拖动指定的 Sprite。 | Sprite | ||
使用户可以在启用触摸的设备上拖动指定的 Sprite。 | Sprite | ||
对源起于此对象的所有 MovieClip 递归停止时间轴执行。 | DisplayObjectContainer | ||
结束 startDrag() 方法。 | Sprite | ||
结束 startTouchDrag() 方法,用于启用触摸的设备。 | Sprite | ||
交换两个指定子对象的 Z 轴顺序(从前到后顺序)。 | DisplayObjectContainer | ||
在子级列表中两个指定的索引位置,交换子对象的 Z 轴顺序(前后顺序)。 | DisplayObjectContainer | ||
返回此对象的字符串表示形式,其格式设置遵守区域设置特定的约定。 | Object | ||
返回指定对象的字符串表示形式。 | Object | ||
返回指定对象的原始值。 | Object | ||
检查是否用此 EventDispatcher 对象或其任何祖代为指定事件类型注册了事件侦听器。 | EventDispatcher |
buttonMode | 属性 |
buttonMode:Boolean
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9, AIR 1.0, Flash Lite 4 |
指定此 sprite 的按钮模式。如果为 true
,此 sprite 的行为方式就像按钮,这表示它可在指针经过 sprite 时触发显示手形光标,并可在 sprite 具有焦点时按下 Enter 键或空格键来接收 click
事件。通过将 useHandCursor
属性设置为 false
可以禁止显示手形光标,在此情况下将显示指针。
虽然使用 SimpleButton 类创建按钮是一种比较好的方法,但是可以使用 buttonMode
属性为 Sprite 提供某种类似按钮的功能。要在 Tab 键顺序中包括 Sprite,请将 tabEnabled
属性(继承自 InteractiveObject 类,默认情况下为 false
)设置为 true
。此外,考虑是否希望 sprite 的子级支持用户输入。大多数按钮不启用其子对象的用户输入交互性,因为这样会混淆事件流。要对所有子对象禁用用户输入交互性,则必须将 mouseChildren
属性(继承自 DisplayObjectContainer 类)设置为 false
。
如果将 buttonMode
属性与 MovieClip 类(该类是 Sprite 类的子类)一起使用,则按钮可能会具有一些增加的功能。如果包括具有 _up、_over 和 _down 标签的帧,则 Flash Player 将提供自动状态更改功能(类似于 ActionScript 的以前版本中为用作按钮的影片剪辑提供的功能)。没有时间轴的 Sprite 不可以使用这些自动状态更改,因此没有要加标签的帧。
实现
public function get buttonMode():Boolean
public function set buttonMode(value:Boolean):void
相关 API 元素
示例 ( 如何使用本示例 )
buttonMode
属性设置为 true
,将另一个的此属性设置为 false
。当您编译和运行应用程序时,这两个 Sprite 都响应鼠标事件,但只有将 buttonMode
设置为 true
的那个 Sprite 才使用手形光标并包括在 Tab 键顺序中:
import flash.display.Sprite; import flash.events.MouseEvent; var circle1:Sprite = new Sprite(); circle1.graphics.beginFill(0xFFCC00); circle1.graphics.drawCircle(40, 40, 40); circle1.buttonMode = true; circle1.addEventListener(MouseEvent.CLICK, clicked); var circle2:Sprite = new Sprite(); circle2.graphics.beginFill(0xFFCC00); circle2.graphics.drawCircle(120, 40, 40); circle2.buttonMode = false; circle2.addEventListener(MouseEvent.CLICK, clicked); function clicked(event:MouseEvent):void { trace ("Click!"); } addChild(circle1); addChild(circle2);
dropTarget | 属性 |
dropTarget:DisplayObject
[只读] 语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9, AIR 1.0, Flash Lite 4 |
指定拖动 sprite 时经过的显示对象,或放置 sprite 的显示对象。
实现
public function get dropTarget():DisplayObject
相关 API 元素
示例 ( 如何使用本示例 )
circle
Sprite 和两个 target
Sprite。当用户将光标放在 Sprite 上并按下鼠标按键时,将对 circle
Sprite 调用 startDrag()
方法;当用户释放鼠标按键时,将调用 stopDrag()
方法。这样,用户就可以拖动 sprite。松开鼠标按键时,将调用 mouseRelease()
方法,此方法又会跟踪 dropTarget
对象(用户将 circle
Sprite 拖动到的对象)的 name
:
import flash.display.Sprite; import flash.events.MouseEvent; var circle:Sprite = new Sprite(); circle.graphics.beginFill(0xFFCC00); circle.graphics.drawCircle(0, 0, 40); var target1:Sprite = new Sprite(); target1.graphics.beginFill(0xCCFF00); target1.graphics.drawRect(0, 0, 100, 100); target1.name = "target1"; var target2:Sprite = new Sprite(); target2.graphics.beginFill(0xCCFF00); target2.graphics.drawRect(0, 200, 100, 100); target2.name = "target2"; addChild(target1); addChild(target2); addChild(circle); circle.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown) function mouseDown(event:MouseEvent):void { circle.startDrag(); } circle.addEventListener(MouseEvent.MOUSE_UP, mouseReleased); function mouseReleased(event:MouseEvent):void { circle.stopDrag(); trace(circle.dropTarget.name); }
graphics | 属性 |
graphics:Graphics
[只读] 语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9, AIR 1.0, Flash Lite 4 |
指定属于此 sprite 的 Graphics 对象,在此 sprite 中可执行矢量绘图命令。
实现
public function get graphics():Graphics
示例 ( 如何使用本示例 )
circle
Sprite,并使用其 graphics
属性以黄色 (0xFFCC00) 填充色绘制一个圆形:
import flash.display.Sprite; var circle:Sprite = new Sprite(); circle.graphics.beginFill(0xFFCC00); circle.graphics.drawCircle(40, 40, 40); addChild(circle);
hitArea | 属性 |
hitArea:Sprite
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9, AIR 1.0, Flash Lite 4 |
指定一个 sprite 用作另一个 sprite 的点击区域。如果 hitArea
属性不存在或者其值为 null
或 undefined
,则 Sprite 本身将用作点击区域。hitArea
属性的值可以是对 Sprite 对象的引用。
可以随时更改 hitArea
属性;修改后的 Sprite 会立即使用新的点击区域行为。指定为点击区域的 Sprite 不必是可见的;虽然不可见,但其图形形状仍会作为点击区域被检测。
注意:必须将指定为点击区域的 Sprite 的 mouseEnabled
属性设置为 false
。否则,sprite 按钮可能会不起作用,因为被指定为点击区域的 sprite 会接收用户输入事件而不是您的 sprite 按钮。
实现
public function get hitArea():Sprite
public function set hitArea(value:Sprite):void
示例 ( 如何使用本示例 )
circle
Sprite 和一个 square
Sprite。square
Sprite 是 circle
Sprite 的 hitArea
。因此,当用户单击 square
Sprite 时,circle
Sprite 将调度 click
事件:
import flash.display.Sprite; import flash.events.MouseEvent; var circle:Sprite = new Sprite(); circle.graphics.beginFill(0xFFCC00); circle.graphics.drawCircle(0, 0, 40); var square:Sprite = new Sprite(); square.graphics.beginFill(0xCCFF00); square.graphics.drawRect(200, 0, 100, 100); circle.hitArea = square; square.mouseEnabled = false; circle.addEventListener(MouseEvent.CLICK, clicked); function clicked(event:MouseEvent):void{ trace(event.target == circle); // true trace(event.target == square); // false } addChild(circle); addChild(square);
soundTransform | 属性 |
soundTransform:flash.media:SoundTransform
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9, AIR 1.0, Flash Lite 4 |
控制此 sprite 中的声音。
注意:此属性不影响 HTMLControl 对象(位于 Adobe AIR 中)中的 HTML 内容。
实现
public function get soundTransform():flash.media:SoundTransform
public function set soundTransform(value:flash.media:SoundTransform):void
相关 API 元素
示例 ( 如何使用本示例 )
container
的 Sprite,并将 Loader 对象添加到其子级列表。Loader 对象将加载 SWF 文件。当用户单击 tf
文本字段中的链接时,mute()
方法将 container
Sprite soundTransform
属性的 volume
属性设置为 true
:
import flash.display.Sprite; import flash.display.Loader; import flash.events.IOErrorEvent; import flash.events.MouseEvent; import flash.net.URLRequest; import flash.text.TextField; import flash.media.SoundTransform; var container:Sprite = new Sprite(); addChild(container); var ldr:Loader = new Loader; var urlReq:URLRequest = new URLRequest("SoundPlayer.swf"); ldr.load(urlReq); container.addChild(ldr); ldr.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, urlNotFound); var tf:TextField = new TextField(); tf.htmlText = "<a href = 'event:Mute'>Mute / Unmute</a>"; addChild(tf); var mySoundTransform:SoundTransform = new SoundTransform(); mySoundTransform.volume = 1; tf.addEventListener(MouseEvent.CLICK, mute); function mute(event:MouseEvent):void { if (mySoundTransform.volume == 0) { mySoundTransform.volume = 1; } else { mySoundTransform.volume = 0; } container.soundTransform = mySoundTransform; } function urlNotFound(event:IOErrorEvent):void { trace("The URL was not found."); }
useHandCursor | 属性 |
useHandCursor:Boolean
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9, AIR 1.0 |
布尔值,表示当指针滑过 buttonMode
属性设置为 true
的 sprite 时是否显示指针手形(手形光标)。useHandCursor
属性的默认值是 true
。如果 useHandCursor
设置为 true
,则当指针滑过按钮 sprite 时将显示用于按钮的指针手形。如果 useHandCursor
为 false
,则将改用箭头指针。
可以随时更改 useHandCursor
属性;修改后的 Sprite 会立即具有新的光标外观。
注意:在 Flex 或 Flash Builder 中,如果您的 Sprite 拥有子 Sprite,您可能要将 mouseChildren
属性设置为 false
。例如,如果您希望在 Flex <mx:Label> 控件上出现手形光标,请将 useHandCursor
和 buttonMode
属性设置为 true
,并将 mouseChildren
属性设置为 false
。
实现
public function get useHandCursor():Boolean
public function set useHandCursor(value:Boolean):void
相关 API 元素
示例 ( 如何使用本示例 )
buttonMode
属性设置为 true
,但将其中一个的 useHandCursor
属性设置为 true
,将另一个的此属性设置为 false
。当您编译和运行应用程序时,这两个 Sprite 都作为按钮进行响应(并且都包括在 Tab 键顺序中),但只有将 useHandCursor
设置为 true
的那个 Sprite 才使用手形光标:
import flash.display.Sprite; import flash.events.MouseEvent; var circle1:Sprite = new Sprite(); circle1.graphics.beginFill(0xFFCC00); circle1.graphics.drawCircle(40, 40, 40); circle1.buttonMode = true; circle1.useHandCursor = true; circle1.addEventListener(MouseEvent.CLICK, clicked); var circle2:Sprite = new Sprite(); circle2.graphics.beginFill(0xFFCC00); circle2.graphics.drawCircle(120, 40, 40); circle2.buttonMode = true; circle2.useHandCursor = false; circle2.addEventListener(MouseEvent.CLICK, clicked); function clicked(event:MouseEvent):void { trace ("Click!"); } addChild(circle1); addChild(circle2);
Sprite | () | 构造函数 |
public function Sprite()
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9, AIR 1.0, Flash Lite 4 |
创建一个新的 Sprite 实例。创建 Sprite 实例后,调用 DisplayObjectContainer.addChild()
或 DisplayObjectContainer.addChildAt()
方法,以便将 Sprite 添加到父级 DisplayObjectContainer。
startDrag | () | 方法 |
public function startDrag(lockCenter:Boolean = false, bounds:Rectangle = null):void
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9, AIR 1.0, Flash Lite 4 |
允许用户拖动指定的 Sprite。Sprite 将一直保持可拖动,直到通过调用 Sprite.stopDrag()
方法来明确停止,或直到将另一个 Sprite 变为可拖动为止。在同一时间只有一个 Sprite 是可拖动的。
三维显示对象跟随指针,Sprite.startDrag()
将在由显示对象定义的三维平面中移动对象。或者,如果显示对象为二维对象和三维对象的子对象,则二维对象将在由三维父对象定义的三维平面中移动。
参数
lockCenter:Boolean (default = false ) — 指定将可拖动的 sprite 锁定到指针位置中心 (true ),还是锁定到用户第一次单击该 sprite 的位置 (false )。
| |
bounds:Rectangle (default = null ) — 相对于 Sprite 父级的坐标的值,用于指定 Sprite 约束矩形。
|
相关 API 元素
示例 ( 如何使用本示例 )
circle
Sprite 和两个 target
Sprite。当用户将光标放在 Sprite 上并按下鼠标按键时,将对 circle
Sprite 调用 startDrag()
方法;当用户释放鼠标按键时,将调用 stopDrag()
方法。这样,用户就可以拖动 sprite。松开鼠标按键时,将调用 mouseRelease()
方法,此方法又会跟踪 dropTarget
对象(用户将 circle
Sprite 拖动到的对象)的 name
:
import flash.display.Sprite; import flash.events.MouseEvent; var circle:Sprite = new Sprite(); circle.graphics.beginFill(0xFFCC00); circle.graphics.drawCircle(0, 0, 40); var target1:Sprite = new Sprite(); target1.graphics.beginFill(0xCCFF00); target1.graphics.drawRect(0, 0, 100, 100); target1.name = "target1"; var target2:Sprite = new Sprite(); target2.graphics.beginFill(0xCCFF00); target2.graphics.drawRect(0, 200, 100, 100); target2.name = "target2"; addChild(target1); addChild(target2); addChild(circle); circle.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown) function mouseDown(event:MouseEvent):void { circle.startDrag(); } circle.addEventListener(MouseEvent.MOUSE_UP, mouseReleased); function mouseReleased(event:MouseEvent):void { circle.stopDrag(); trace(circle.dropTarget.name); }
startTouchDrag | () | 方法 |
public function startTouchDrag(touchPointID:int, lockCenter:Boolean = false, bounds:Rectangle = null):void
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 10.1, AIR 2, Flash Lite 4 |
使用户可以在启用触摸的设备上拖动指定的 Sprite。Sprite 将一直保持可拖动,直到通过调用 Sprite.stopTouchDrag()
方法来明确停止,或直到将另一个 Sprite 变为可拖动为止。在同一时间只有一个 Sprite 是可拖动的。
三维显示对象跟随指针,Sprite.startTouchDrag()
在由显示对象定义的三维平面中移动对象。或者,如果显示对象为二维对象和三维对象的子对象,则二维对象将在由三维父对象定义的三维平面中移动。
参数
touchPointID:int — 分配给触摸点的整数。
| |
lockCenter:Boolean (default = false ) — 指定将可拖动的 sprite 锁定到指针位置中心 (true ),还是锁定到用户第一次单击该 sprite 的位置 (false )。
| |
bounds:Rectangle (default = null ) — 相对于 Sprite 父级的坐标的值,用于指定 Sprite 约束矩形。
|
相关 API 元素
示例 ( 如何使用本示例 )
MySprite.addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin); MySprite.addEventListener(TouchEvent.TOUCH_END, onTouchEnd); function onTouchBegin(e:TouchEvent) { e.target.startTouchDrag(e.touchPointID, false, bg.getRect(this)); trace("touch begin"); } function onTouchEnd(e:TouchEvent) { e.target.stopTouchDrag(e.touchPointID); trace("touch end"); }
stopDrag | () | 方法 |
public function stopDrag():void
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 9, AIR 1.0, Flash Lite 4 |
结束 startDrag()
方法。通过 startDrag()
方法变为可拖动的 Sprite 将一直保持可拖动状态,直到添加 stopDrag()
方法或另一个 Sprite 变为可拖动状态为止。在同一时间只有一个 Sprite 是可拖动的。
相关 API 元素
示例 ( 如何使用本示例 )
circle
Sprite 和两个 target
Sprite。当用户将光标放在 Sprite 上并按下鼠标按键时,将对 circle
Sprite 调用 startDrag()
方法;当用户释放鼠标按键时,将调用 stopDrag()
方法。这样,用户就可以拖动 sprite。松开鼠标按键时,将调用 mouseRelease()
方法,此方法又会跟踪 dropTarget
对象(用户将 circle
Sprite 拖动到的对象)的 name
:
import flash.display.Sprite; import flash.events.MouseEvent; var circle:Sprite = new Sprite(); circle.graphics.beginFill(0xFFCC00); circle.graphics.drawCircle(0, 0, 40); var target1:Sprite = new Sprite(); target1.graphics.beginFill(0xCCFF00); target1.graphics.drawRect(0, 0, 100, 100); target1.name = "target1"; var target2:Sprite = new Sprite(); target2.graphics.beginFill(0xCCFF00); target2.graphics.drawRect(0, 200, 100, 100); target2.name = "target2"; addChild(target1); addChild(target2); addChild(circle); circle.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown) function mouseDown(event:MouseEvent):void { circle.startDrag(); } circle.addEventListener(MouseEvent.MOUSE_UP, mouseReleased); function mouseReleased(event:MouseEvent):void { circle.stopDrag(); trace(circle.dropTarget.name); }
stopTouchDrag | () | 方法 |
public function stopTouchDrag(touchPointID:int):void
语言版本: | ActionScript 3.0 |
运行时版本: | Flash Player 10.1, AIR 2, Flash Lite 4 |
结束 startTouchDrag()
方法,用于启用触摸的设备。通过 startTouchDrag()
方法变为可拖动的 Sprite 将一直保持可拖动状态,直到添加 stopTouchDrag()
方法或另一个 Sprite 变为可拖动为止。在同一时间只有一个 Sprite 是可拖动的。
参数
touchPointID:int — 分配给 startTouchDrag 方法中的触摸点的整数。
|
相关 API 元素
示例 ( 如何使用本示例 )
MySprite.addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin); MySprite.addEventListener(TouchEvent.TOUCH_END, onTouchEnd); function onTouchBegin(e:TouchEvent) { e.target.startTouchDrag(e.touchPointID, false, bg.getRect(this)); trace("touch begin"); } function onTouchEnd(e:TouchEvent) { e.target.stopTouchDrag(e.touchPointID); trace("touch end"); }
- 声明
size
属性(100 x 100 像素)和背景颜色(橙色)供以后绘制正方形时使用。 - 然后,构造函数创建一个新的
child
Sprite 对象,并用它来添加两个事件侦听器和与之相关联的方法:mouseDownHandler()
和mouseUpHandler()
。 - 然后,将
child
Sprite 对象传递给draw()
方法,该方法将绘制橙色正方形。 - 然后,将子项放置在显示列表上,方法是调用
addChild()
方法。 - 事件侦听器的工作方式如下:
mouseDownHandler()
:当用户单击 Sprite 对象时,此方法将添加一个 mouseMove 事件侦听器,即可以处理鼠标移动的mouseMoveHandler()
方法。然后调用startDrag()
方法,此方法允许拖动 Sprite 对象。mouseUpHandler()
:当释放鼠标按键时,将删除 mouseMove 事件侦听器,并调用stopDrag()
方法,该方法可使橙色正方形的位置保持不变。mouseMoveHandler
:只要按住鼠标左键不放,此方法就会指示播放器不断重绘橙色正方形。
注意:每个事件侦听器方法都声明一个局部 sprite
变量,已为该变量赋予了事件的 target
属性。
package { import flash.display.Sprite; import flash.events.*; public class SpriteExample extends Sprite { private var size:uint = 100; private var bgColor:uint = 0xFFCC00; public function SpriteExample() { var child:Sprite = new Sprite(); child.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); child.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); draw(child); addChild(child); } private function mouseDownHandler(event:MouseEvent):void { trace("mouseDownHandler"); var sprite:Sprite = Sprite(event.target); sprite.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); sprite.startDrag(); } private function mouseUpHandler(event:MouseEvent):void { trace("mouseUpHandler"); var sprite:Sprite = Sprite(event.target); sprite.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler); sprite.stopDrag(); } private function mouseMoveHandler(event:MouseEvent):void { trace("mouseMoveHandler"); event.updateAfterEvent(); } private function draw(sprite:Sprite):void { sprite.graphics.beginFill(bgColor); sprite.graphics.drawRect(0, 0, size, size); sprite.graphics.endFill(); } } }
Tue Jun 12 2018, 11:04 AM Z