0

我有一个影片剪辑,我将为其添加一个平移功能。我想将 pan 添加为影片剪辑可以引用的自己的类。

当我创建 pan 类时,我将movieclip 发送给它,因此我始终拥有它的位置属性。

在 pan 类中访问舞台的最佳方式是什么?我需要能够获得舞台 mouseX、mouseY、stageWidth 和 stageHeight。

现在,我让 pan 类扩展了一个 sprite 对象,并将其添加为我想要平移的影片剪辑的子对象。

将舞台本身也发送到 pan 类会更好还是有比这更好的方法?

4

1 回答 1

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-extend MovieClip。除非,也就是说,一个Pan实例将控制多个MovieClip实例,否则将它作为自己的东西可能更有意义(如您上面描述的方式)。

于 2012-06-12T21:41:27.253 回答