Flash CS5 / AS3,预加载主类构造函数后无法引用影片剪辑

发布于 2024-11-30 05:38:43 字数 1017 浏览 1 评论 0原文

我修改了 Adob​​e Flash CS5 示例以创建带有预加载器的 swf。

在我的 FLA 中,我有两个停止帧:

在第一帧中我只放置了此代码(以及显示百分比的文本字段):

stop();

this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, onLoading);
this.loaderInfo.addEventListener(Event.COMPLETE, onComplete);

function onLoading(evt:ProgressEvent):void {
    var loaded:Number = evt.bytesLoaded / evt.bytesTotal; 
    percent_txt.text = (loaded*100).toFixed(0) + "%";
};

function onComplete(event:Event):void { 
    this.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, onLoading);
    this.loaderInfo.removeEventListener(Event.COMPLETE, onComplete);
    gotoAndStop(2); 
};

在第二帧中 I:

  • 导出主类
  • 我在舞台上拥有所有需要的图形资源;

当我测试 Adob​​e 示例时(它在第 2 帧上没有主类,只有一个大图像),一切正常,但当我编译修改后的版本时,我收到奇怪的错误。

在主类构造函数中,我引用了三个影片剪辑,例如。这样:myClip.alpha=0但现在 Flash 似乎再也看不到它们了(它们为空)。为什么?

我怎样才能让这个预加载器工作?

提前致谢。

I modified an Adobe Flash CS5 sample to create a swf with a preloader.

In my FLA I've two stopped frames:

In the first frame I only put this code (and a textfield showing percentage):

stop();

this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, onLoading);
this.loaderInfo.addEventListener(Event.COMPLETE, onComplete);

function onLoading(evt:ProgressEvent):void {
    var loaded:Number = evt.bytesLoaded / evt.bytesTotal; 
    percent_txt.text = (loaded*100).toFixed(0) + "%";
};

function onComplete(event:Event):void { 
    this.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, onLoading);
    this.loaderInfo.removeEventListener(Event.COMPLETE, onComplete);
    gotoAndStop(2); 
};

In the second frame I:

  • exported the Main class;
  • I have all the needed graphics assets on stage;

When I test the Adobe sample (it has no main class on frame 2, only a large image) anything works fine, but when I compile the modified version I get strange errors.

In the Main class constructor I reference three movieclips, eg. this way: myClip.alpha=0, but it seems now Flash can't see them anymore (they are null). Why?

How can I make this preloader work?

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

昇り龍 2024-12-07 05:38:43

当你说主类时,你指的是你设置为文档类的类吗?如果我没听错的话,问题可能是文档类总是在第一帧上实例化,因此舞台上的实例尚不存在。

不可能让文档类等到后面的帧才实例化。您可能必须从文档类分配中删除您的类,以便在第 2 帧上创建实例。此时,您可以将对影片剪辑或舞台的引用传递给类的构造函数。

When you say Main class, are you referring to a class you have set as the Document Class? If I'm following you correctly, the problem is likely that the Document Class is always instantiated on the first frame, so your instances on stage wouldn't yet exist.

It's not possible to have the Document Class wait to instantiate until later frames. You'll probably have to remove your class from the Document Class assignment in order to create your instance on frame 2. At that point, you can pass a reference to your movieclips or stage through to the constructor of your class.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文