actionscript-3 - 在 ActionScript 3中没有DisplayObject的情况下,获取舞台?

  显示原文与译文双语对照的内容
0 0

如果我没有一个 sprite/displayobject,我如何才能获得对我舞台的参考stage已经添加到舞台上?


我需要一个 static 类,我希望它在 static 类构造函数中初始化,但我还需要对这个阶段的引用。

public class UtilClass
{
 trace("init:" + stage);
}

我的AS-3 应用程序中首先调用的是主 sprite/displayobject的构造函数,它可以访问。 所以舞台在那一点上存在。 我调用我的的实用程序方法。 现在我希望它在第一次使用( 当阶段已经存在时) 时自动初始化。
如果阶段对象可以从任何地方访问而不从实用程序类外部初始化,我想知道的收费。

编辑:


public class SimpleSprite extends Sprite
{
 public static var aaa:int = 12;

 public static function test():void
 {
 trace("here I am");
 }

 trace(aaa, Capabilities.screenResolutionX+","+Capabilities.screenResolutionY);
 test();
}

时间: 原作者:

0 0

平台引用可以在 MainTimeline 或者 Main 实例中使用,具体取决于平台。 你可以在那里添加代码,以便在需要时将该引用传递给其他类。 类应该有一个方法( static,在你的情况下),它接受 Stage 参数并将它存储在类的某个地方。


public class UtilClass {
 private static var theStage:Stage=null;
 public static function initialize(s:Stage):void {
 if (theStage) return;//we're initialized already
 theStage=s;
 }
//once you call this, you can"trace(theStage)" and get correct output
//other methods can also rely on theStage now.
}

然后你打电话给 UtilClass.initialize(stage);

原作者:
0 0

你需要初始化你的UtilClass并通过阶段参考。 我建议你只为'管理'阶段引用提供一个类。

你可以试试这样的( 只是个简单的例子):


public class StageReference
{
 public static const STAGE_DEFAULT:String = 'stageDefault';
 protected static var _stageMap:Dictionary;

 public static function getStage(id:String = StageReference.STAGE_DEFAULT):Stage
 {
 if (!(id in StageReference._getMap()))
 throw new Error('Cannot get Stage ("' + id + '") before it has been set.');

 return StageReference._getMap()[id];
 }

 public static function setStage(stage:Stage, id:String = StageReference.STAGE_DEFAULT):void
 {
 StageReference._getMap()[id] = stage;
 }

 public static function removeStage(id:String = StageReference.STAGE_DEFAULT):Boolean
 {
 if (!(id in StageReference._getMap()))
 return false;

 StageReference.setStage(null, id);

 return true;
 }

 protected static function _getMap():Dictionary
 {
 if (!StageReference._stageMap) StageReference._stageMap = new Dictionary();

 return StageReference._stageMap;
 }
}

启动应用程序时( 主要类或者开始包含逻辑的位置)


 StageReference.setStage(stage);

当你需要得到舞台参考时


 trace('Checking the Stage: ', StageReference.getStage());

原作者:
...