Actionscript 3.0 中的 MovieClip 与 Sprite
Posted
技术标签:
【中文标题】Actionscript 3.0 中的 MovieClip 与 Sprite【英文标题】:MovieClip vs Sprite in Actionscript 3.0 【发布时间】:2012-04-12 20:53:37 【问题描述】:如果我用 MovieClip 而不是 Sprite 扩展 MainClass,还能做些什么。我知道 MovieClip 扩展了 Sprite,并且在它下面定义了 Timeline。但是我仍然可以通过 MovieClip 使用它吗?
package
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.display.MovieClip;
import flash.text.TextFieldType;
public class MainClass extends Sprite
public function MainClass()
var m:Module=new Module("Admin","John");
var tf:TextField=new TextField();
tf.text=m.info;
tf.border=true;
tf.type=TextFieldType.INPUT;
var myFormat:TextFormat = new TextFormat();
myFormat.size = 3;
tf.defaultTextFormat=myFormat;
addChild(tf);
this.width=500;
this.height=300;
this.x=0;
this.y=10;
class Module
private var m_mName:String;
private var m_owner:String;
public function Module(mName:String,owner:String):void
m_mName=mName;
m_owner=owner;
public function get info():String
return owner+' is owner of '+mName;
public function get mName():String
return m_mName;
public function get owner():String
return m_owner;
另一个小问题,如果我用 MovieClip 替换 Sprite,如何使用 Timeline?
【问题讨论】:
MovieClip 扩展了 Sprite。话虽如此,您在 MovieClip 上获得的更多信息就是帧属性/功能。 【参考方案1】:引用an AS3 book:
在 ActionScript 3.0 之前,MovieClip 类被用作通用图形容器(很像 ActionScript 3.0 使用的 Sprite 类)。从 ActionScript 3.0 开始,MovieClip 仅用于控制在 Flash 创作工具中创建的影片剪辑元件的实例。由于 ActionScript 3.0 不提供创建时间轴元素(例如帧和补间)的方法,因此在 ActionScript 3.0 中无需在运行时创建新的空影片剪辑。相反,所有以编程方式创建的图形都应该是适当的核心显示类(Bitmap、Shape、Sprite、TextField 等)的实例。
MovieClip 是一个动态类,它保留了与 AS2 的向后兼容性。这意味着,虽然不推荐,但如果要求您向 MovieClip 添加属性,您可以简单地说 myMC.myCustomProperty = "someValue"
,而使用 Sprite,则会引发错误。
出于这个原因,他们还说使用 Sprite 在性能方面更有效。您可以在 this Adobe Forum post 找到有关此的讨论。
【讨论】:
以上是关于Actionscript 3.0 中的 MovieClip 与 Sprite的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Actionscript 3.0 中的数组 B 中的数组 A 中删除元素?
如何在 Actionscript 3.0 中获取数组的所有排列?
未找到 Animate Actionscript 3.0 场景,但存在场景
在Adobe Animate ActionScript 3.0中循环