首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从辅助.fla访问.as元素

从辅助.fla访问.as元素
EN

Stack Overflow用户
提问于 2015-07-14 07:29:38
回答 1查看 38关注 0票数 0

我想访问.fla的元素(比如按钮、文本字段等等)。来自其他.as,而不是主类。

编辑:我将分享代码,以获得更多信息。

我有一个gallery.fla,它的文档类是gallery.as。代码并不重要,在那里我读取了XML,并取决于某个标记的值,我希望另一个类修改gallery.fla上按钮的标签。

gallery.as

代码语言:javascript
复制
package{
import otherClass; 
public class gallery() extends MovieClip{
    private var otherGallery:otherClass = new otherClass();
    public function gallery(){
          if(x="xmlValue"){
             otherGallery.changeLabel();
          }     
     }
 }  
}

otherClass.as

代码语言:javascript
复制
public function changeLabel():void{
  btnOpen.label = "labelChanged";
}

btnOpen是.fla上的一个按钮,我不能从otherClass.as访问.fla的任何元素。错误1120:未定义属性btnOpen的访问。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-14 16:12:26

这是一个范围问题。AS3中的所有对象都是类,在编程中,vars和实例只能在它们的作用域中使用。

有几种方法可以从其中一个子时间线中获得对主时间线范围的引用。

1.轻松草率的方式

您可以使用root关键字获得对主时间线/文档类的引用。

代码语言:javascript
复制
MovieClip(root).btnOpen.label = "labelChanged";

在将类添加到显示后,根变量变得可用。

2.将对主时间线/文档类的引用传递给其他类

因此,在您的Main.as (或主时间线或文档类)中,您可以这样做:

代码语言:javascript
复制
myGalleryInstance.main = this; 

那么您的gallery类将如下所示:

代码语言:javascript
复制
//those parenthesis don't belong in the class declaration --> () <--, I've taken them out
public class gallery extends MovieClip {
    private var otherGallery:otherClass; //better to instantiate complex objects in the constructor
    public var main:MovieClip; //create a public var you can populate

    public function gallery(){
          otherGallery = new otherClass();
          if(x="xmlValue"){
             otherGallery.changeLabel();
          }     
    }

    public function changeLabel():void{
        main.btnOpen.label = "labelChanged";
    }
} 

3.使用父关键字-粗放的方法#2

如果gallery类和otherCLass是显示对象,则可以使用parent关键字获取主类/main时间线。因此,假设图库是主时间线的子程序,而otherClass是gallery.as的子程序,那么您可以这样做:

代码语言:javascript
复制
//the main timeline is the grandparent of 'this' (otherClass)
MovieClip(MovieClip(parent).parent).btnOpen.label = "labelChanged";

root一样,只有在将对象添加到显示之后才能使用parent

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31400348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档