我有一个影片剪辑,我将为其添加一个平移功能。我想将 pan 添加为影片剪辑可以引用的自己的类。
当我创建 pan 类时,我将movieclip 发送给它,因此我始终拥有它的位置属性。
在 pan 类中访问舞台的最佳方式是什么?我需要能够获得舞台 mouseX、mouseY、stageWidth 和 stageHeight。
现在,我让 pan 类扩展了一个 sprite 对象,并将其添加为我想要平移的影片剪辑的子对象。
将舞台本身也发送到 pan 类会更好还是有比这更好的方法?
我有一个影片剪辑,我将为其添加一个平移功能。我想将 pan 添加为影片剪辑可以引用的自己的类。
当我创建 pan 类时,我将movieclip 发送给它,因此我始终拥有它的位置属性。
在 pan 类中访问舞台的最佳方式是什么?我需要能够获得舞台 mouseX、mouseY、stageWidth 和 stageHeight。
现在,我让 pan 类扩展了一个 sprite 对象,并将其添加为我想要平移的影片剪辑的子对象。
将舞台本身也发送到 pan 类会更好还是有比这更好的方法?
创建一个单例类来管理对调用的阶段的更改,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-extend MovieClip
。除非,也就是说,一个Pan
实例将控制多个MovieClip
实例,否则将它作为自己的东西可能更有意义(如您上面描述的方式)。