Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 如何从AS3类文件中引用手动绘制的符号?_Flash_Actionscript 3 - Fatal编程技术网

Flash 如何从AS3类文件中引用手动绘制的符号?

Flash 如何从AS3类文件中引用手动绘制的符号?,flash,actionscript-3,Flash,Actionscript 3,我一直在忙着为我不久前编写的一个类文件构建UI 我的问题是在参考时间线上的符号。所有符号都有一个实例名,并且只存在于第一帧中(主时间轴也只有一帧) 目前,我正在使用 import circles.Spirograph; var circles:Spirograph = new Spirograph(stage); 所以我在我的类文件中有一个对stage的引用 如果在名为sb1的阶段上有库滚动条,那么如何在类文件中访问它,以及如何获取它的值?有几种方法。如果Spirograph是一个Displa

我一直在忙着为我不久前编写的一个类文件构建UI

我的问题是在参考时间线上的符号。所有符号都有一个实例名,并且只存在于第一帧中(主时间轴也只有一帧)

目前,我正在使用

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;
...
}
你可以通过检查了解一个简单的实现,但是比我发布的内容更完整