Flash 如何从AS3类文件中引用手动绘制的符号?
我一直在忙着为我不久前编写的一个类文件构建UI 我的问题是在参考时间线上的符号。所有符号都有一个实例名,并且只存在于第一帧中(主时间轴也只有一帧) 目前,我正在使用Flash 如何从AS3类文件中引用手动绘制的符号?,flash,actionscript-3,Flash,Actionscript 3,我一直在忙着为我不久前编写的一个类文件构建UI 我的问题是在参考时间线上的符号。所有符号都有一个实例名,并且只存在于第一帧中(主时间轴也只有一帧) 目前,我正在使用 import circles.Spirograph; var circles:Spirograph = new Spirograph(stage); 所以我在我的类文件中有一个对stage的引用 如果在名为sb1的阶段上有库滚动条,那么如何在类文件中访问它,以及如何获取它的值?有几种方法。如果Spirograph是一个Displa
import circles.Spirograph;
var circles:Spirograph = new Spirograph(stage);
所以我在我的类文件中有一个对stage的引用
如果在名为
sb1
的阶段上有库滚动条,那么如何在类文件中访问它,以及如何获取它的值?有几种方法。如果Spirograph是一个DisplayObject,它将具有一个“root”属性。您可以将此属性强制转换为MovieClip,然后访问sb1:
// somewhere inside your class
var mainTimeline:MovieClip = MovieClip(root);
trace(maintTimeline.sb1)
另一个选项是将“this”传递到Spirograph构造函数,因为您正在时间线上实例化,“this”指的是时间线:
var circles:Spirograph = new Spirograph(this);
那么你的阶段变量可以这样得到:
private var _stg:Stage;
public function Spirograph(main:MovieClip){
_stg = main.stage;
// get at sb1
trace(main.sb1);
}
还有一些方法,但这些是最常见的。嗯,我不确定我是否完全了解您的设置以及您希望如何使用这些东西 我所理解的是,您的所有ui符号都在主时间轴中,然后,您有一个类
Spirograph
,其中包含逻辑,需要符号来引用它们。我很抱歉,对吗
遵循您的结构的快速解决方案是设置Spirograph
,以便期望一个包含所有ui资产的DisplayObject。然后,通过初始化方法按名称访问所需的实例
import circles.Spirograph;
var circles:Spirograph = new Spirograph( this as DisplayObject);
然后,用螺旋描记法
public function Spirograph(skin:DisplayObject ){
_skin = skin;
if(_skin.stage) _init();
else _skin.addEventListener(Event.ADDED_TO_STAGE,_init);
}
protected function _init(e:Event = null):void{
if(e) e.removeEventListener(e.type,arguments.callee);
_scrollbarUi = _skin.getChildByName("sb1") as Sprite;
...
}
你可以通过检查了解一个简单的实现,但是比我发布的内容更完整