我有一个movieclip,我将为它添加一个平移功能。我想添加pan作为movieclip可以引用的类。
当我创建pan类时,我将movieclip发送给它,所以我始终拥有它的位置属性。
在pan类中访问舞台的最佳方法是什么?我需要能够获得舞台mouseX,mouseY,stageWidth和stageHeight。
现在,我让pan类扩展了一个sprite对象,并实际将它添加为我想要平移的movieclip的子节点。
将舞台本身发送到泛级课程中会不会更好或者有更好的方法吗?
答案 0 :(得分:1)
创建一个单例类,用于管理名为StageManager
的阶段的更改,并通过向阶段传递引用来初始化它:
//StageManager.as
import flash.display.Stage;
public class StageManager()
{
//publicly accessible singleton instance
public static var instance:StageManager = new StageManager();
private var m_stage:Stage;
//I'm using a custom getter and setter in just in case you need perform some other
//initialization when the stage gets set...
public function set stage(stg:Stage):void
{
m_stage = stg;
}
public function get stage():Stage
{
return m_stage;
}
}
然后在其他地方,就像你的主控制器类:
StageManager.instance.stage = this.stage;
现在,您可以通过StageManager
:
var stageW:int = StageManager.instance.stage.stageWidth;
这样,不仅仅是你的Pan类,而且其他任何事情都可以随时访问全球舞台。很酷,嗯?
至于如何设计你的Pan类,我同意@The_asMan - 扩展MovieClip
。除非,即一个Pan
实例将控制多个MovieClip
实例,否则将它作为自己的事物(上面描述的方式)可能更有意义。