Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Пользовательские события - как? (http://www.flasher.ru/forum/showthread.php?t=134263)

petri 24.12.2009 23:39

Пользовательские события - как?
 
Добрый вечер, господа флешеры. Помогите пожалуйста - никак не разберусь - у меня есть два класса. Один - основной класс. из него я вызываю статические методы другого класса. Как мне определить, что статический метод отработал и вернул мне необходимое значение (массив, дисплейОбжект и тп.). Если я делаю так:
Код AS3:

var someArr:Array = Static.MyStaticMethod();// returns array
 
trace (someArr[0]);

выводит undefined (метод не успевает отработать).

Как реализовать? Спасибо!

Psycho Tiger 24.12.2009 23:43

Он 100% отработает.
Array пишется с большой буквы.

Другой вопрос, отработают ли ассинхронные методы в этом другом методе.

petri 24.12.2009 23:47

Цитата:

Array пишется с большой буквы.
Код не копипаст, просто тут торопился написал с маленькой.

Цитата:

Он 100% отработает.
Тогда почему я получаю undefined, а если сделаю таймер на пару секунд то выводит уже то что нужно? Что я не так понял? Помогите разобраться пожалуйста!

Gaen 25.12.2009 00:24

приведите код вашего MyStaticMethod

petri 25.12.2009 00:42

Код AS3:

package  
{
 
        import flash.events.Event;
        import flash.net.URLLoader;
        import flash.net.URLRequest;
 
        public class MyStaticMethods
        {
 
              public static function loadValues():Array{
 
                        var Url:String = "http://localhost/getValues.php";
                        var request:URLRequest;
                        var loader:URLLoader = new URLLoader();
                        var array:Array = new Array();       
                        var list:XMLList;
                        request = new URLRequest(Url);
 
                        loader.load(request);
                        loader.addEventListener(Event.COMPLETE, loaded);
 
 
                        function loaded(e:Event):void {
 
                                  list = new XMLList(e.target.data);
 
                                  for each (var pic:XML in list){
                                  array.push(list.pic);                               
                                  }       
 
 
                        }
 
                        return array;
                }
        }
 
 
}


udaaff 25.12.2009 00:49

Перечитайте вторую часть второго поста еще раз.

Gaen 25.12.2009 00:50

Внутри метода у вас вызывается асинхронная загрузка, поэтому сам метод-то отрабатывает, а событие COMPLETE наступает позже.

Если хотите вынести загрузку данных - не стоит заморачиваться, там и так уже всё по максимуму сделано внутри URLLoader, все равно придется создавать экземпляр и слушать событие окончания загрузки.

chabapok 25.12.2009 00:52

у вас асинхронная функция как раз. Array у вас получается через какое-то время, когда данные прийдут и функция loaded их запихнет в массив. Делать return array из этой функции бессмысленно т.к. он пустой.

petri 25.12.2009 01:02

Ясно, спасибо большое!


Часовой пояс GMT +4, время: 14:25.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.