佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 2121|回复: 2

addEventListener(Event.Complete, dosometing) 的使用法

[复制链接]
发表于 12-5-2009 05:06 PM | 显示全部楼层 |阅读模式
  1. var loader:URLLoader = new URLLoader();
  2. // some codes
  3. var data:String
  4. loader.addEventListener(Event.Complete, executeThis);

  5. function executeThis(e:Event) {
  6.    data = e.target.data;
  7.    trace(data); // use output
  8.    doSomethingElse(data);
  9. }
复制代码
以上的code 有没有可能改成。。。
  1. var loader:URLLoader = new URLLoader();
  2. // some codes
  3. var data:String
  4. loader.addEventListener(Event.Complete, executeThis);

  5. //execute below when event complete
  6. trace(data);
  7. doSomethingElse(data);

  8. function executeThis(e:Event) {
  9.    data = e.target.data;
  10. }
复制代码
就是把 doSomethingElse 丢到外面 or main function 里面 instead of 在 executeThis() 里面
我是想到。。如果有很多连续 function 要等 eventComplete的话,function 好像要link 来跳来跳去,很麻烦...
first 里面要等event complete 然后run second(), second 又要等 event complete 然后跑 third()....
比如说:
  1. // 这个简单又好看。。。
  2. main() {
  3.   first();
  4.   second();
  5.   third();
  6.   forth();
  7. etc();
  8. }
复制代码
  1. // 这个麻烦了。。。
  2. function first() {
  3.         second();
  4. }

  5. function second() {
  6.         third();
  7. }

  8. function third() {
  9.         etc();
  10. }
复制代码
不知道有人懂我在讲什么吗。。。

[ 本帖最后由 neobie 于 12-5-2009 05:07 PM 编辑 ]
回复

使用道具 举报


ADVERTISEMENT

发表于 13-5-2009 11:17 AM | 显示全部楼层
原帖由 neobie 于 12-5-2009 05:06 PM 发表
var loader:URLLoader = new URLLoader();
// some codes
var data:String
loader.addEventListener(Event.Complete, executeThis);

function executeThis(e:Event) {
   data = e.target.data;
   trace(da ...



你所提供的例子不適當, 正常人也絕對不會那麼寫的
而你所要的則是 Multi Preload 完畢之後才一次性執行某些指定函數
編程是靈活性的技巧, 就看你怎麼運用自己的邏輯思維去完成


var execute:Boolean = false;
var loader:URLLoader = new URLLoader();
var data:String;
loader.addEventListener(Event.COMPLETE, executeThis);

function executeThis(e:Event)
{
        data = e.target.data;
        if(execute)
        {
                trace(data);
                doSomethingElse(data);
        }
}
回复

使用道具 举报

发表于 13-5-2009 10:23 PM | 显示全部楼层
怎么会 "麻烦"??   麻烦不是问题, 只是如果没有好好篇script, 你的filesize 会增加而已, 就算filesize 大也大不了多少.  最重要是 work.

  1. var loader:URLLoader = new URLLoader();
  2. // some codes
  3. var data:String
  4. loader.addEventListener(Event.Complete, executeThis);

  5. //execute below when event complete
  6. trace(data);
  7. doSomethingElse(data);

  8. function executeThis(e:Event) {
  9.    data = e.target.data;
  10. }
复制代码


这样的话, 表示 doSomethingElse(data) 不需要等 任何指示activate 它, timeline Play 这个frame  的时候 doSomethingElse会执行,  

  1. function first(){trace("Hello"}
  2. function second(){trace("How")}
  3. function third(){trace("ARE")}
  4. function forth(){trace("YOU")}
  5. function etc(){trace("???")}
  6. function main() {
  7.   first();
  8.   second();
  9.   third();
  10.   forth();
  11. etc();
  12. }
  13. //now call main function, and main function will call first() second(), third(), forth(), etc()
  14. main();   
复制代码


至于 preloader, 你可以把time停在frame one 然后给指示 load完后去 frame 2, frame 2就include 所有要'继续' 性的 AS.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 12-12-2025 02:26 AM , Processed in 0.106667 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表