Actionscript 3 如何在actionscript3中为类变量使用SWF高度?
我想使用[SWF height=200]中的高度作为类变量。 我尝试了以下代码,但它导致编译错误Actionscript 3 如何在actionscript3中为类变量使用SWF高度?,actionscript-3,actionscript,flash,height,class-variables,Actionscript 3,Actionscript,Flash,Height,Class Variables,我想使用[SWF height=200]中的高度作为类变量。 我尝试了以下代码,但它导致编译错误 const SWF_HEIGHT:int = 200; package { import flash.display.*; [SWF(backgroundColor=0xffffff, width=400, height=SWF_HEIGHT)] public class Main extends Sprite { public static const
const SWF_HEIGHT:int = 200;
package {
import flash.display.*;
[SWF(backgroundColor=0xffffff, width=400, height=SWF_HEIGHT)]
public class Main extends Sprite {
public static const Y:int = SWF_HEIGHT / 2;
}
}
如果我用数字200代替常量SWF_高度,
编译错误没有发生。
但我不想在两个地方写同样的数字。
有没有办法避免在两个位置写入相同的数字?为什么要在metatag中设置高度?您可以在构造函数中执行此操作:
const SWF_HEIGHT:int = 200;
package {
import flash.display.*;
[SWF(backgroundColor=0xffffff, width=400)]
public class Main extends Sprite {
public static const Y:int = SWF_HEIGHT / 2;
public function Main():void {
height = SWF_HEIGHT;
}
}
}
-答案已编辑- 您需要以另一种方式进行:
package {
import flash.display.*;
[SWF(backgroundColor=0xffffff, width=400, height=200)]
public class Main extends Sprite {
private static var _swfHeight : int = -1;
public static function get swfHeight():int{
return _swfHeight;
}
public function Main():void{
_loader = this.loaderInfo;
_loader.addEventListener(Event.COMPLETE, loaded );
}
private var _loader : LoaderInfo;
private function loaded( event : Event ) : void{
_swfHeight = _loader.height;
}
}
}
这不是一个非常可靠的方法。stageHeight并不总是提供SWF元标记中指定的高度。如果有屏幕外的精灵,或者形状的笔划稍微离开屏幕,它可能会更大。这不是真的。你说的是舞台高度,不是舞台高度。然而,你是正确的,因为这不是一个正确的方法。我刚刚测试了不同的可能性,但在noScale StageScaleMode中失败。我编辑了答案以确保正确。我知道我在什么地方做过,所以我查了一下。这应该是唯一真正可靠的解决方案。@Creynders谢谢你的回答!使用noScale StageScaleMode时,是否编辑代码以获取舞台高度?如果我使用showAlldefault模式而不是noScale,我可以使用您代码的早期版本吗?是的,它应该适用于所有阶段缩放和对齐设置。舞台上或舞台外是否有物品。如果你碰巧发现一种情况,但有相当多的可能组合,在其中它不工作,请让我知道!