Форум 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=141241)

Kostetik 19.06.2010 20:17

Как возвратить в главный класс?
 
Доброго времени суток.:victory:
Пытался написать скрипт отправки на сервер данных и получения ответа, но столкнулся с проблемой. Напишу кодом

Код AS3:

файл main.as
var ANSWER;
var Server = new server();
 
class main {
 function main() {
  var Var = 1;
  Server.sendToAndReturn(Var);
 }
}

Код AS3:

файл server.as
class server {
//переменные
 function server() {
 //инициализация
 }
 
 function sendToAndReturn(Var) {
  sVar.Var = Var;
  Request.data = sVar;
  Loader.load(Request);
  Loader.addEventListener(Event.COMPLETE, f);
 }
 
 function f(evt:Event) {
  Loader.removeEventListener(Event.COMPLETE, f);
  //Как возвратить отсюда в функцию main и присвоить ANSWER значения Loader.data???
 }
 
}


BlooDHounD 19.06.2010 20:53

ничего не ясно. у Вас не код, а непоймичто. что не работает не ясно. все экстрасенсы форума сейчас в отпуске.

Kostetik 19.06.2010 21:09

Это приблизительный код.
Я спросил. как возвратить значения Loader.data из вызванной addEventListener'ом функции f в переменную ANSWER в main.

Наверно так.

i.o. 19.06.2010 21:53

вероятно передать callback при вызове Server.sendToAndReturn

Kostetik 19.06.2010 22:25

В принципе то не важно из какой функции он попадет туда. Самое главное что бы он туда попал))

А можно ли сделать так что бы sendToAndReturn остановилась и ждала пока функция f не завершилась.

Возможны ли какие нибудь другие реализации?

ЗЫ Я искренне извиняюсь за нупство. Раньше изучал С++, но как то пока не пригодилось, решил сменить чуток сферу деятельности))

mikhailk 20.06.2010 00:07

Все немного не так.
Если точнее - совсем не так.

Как грузить - пример вот тут (внизу):
http://help.adobe.com/ru_RU/AS3LCR/F...URLLoader.html

Как возвращать - паковать в собственное событие. Я пользуюсь вот таким классом для этого:

Код AS3:

package main {
        import flash.events.Event;
 
        public class AppEvent extends Event {
 
                public function AppEvent(type:String, eventData:Object, bubbles:Boolean = false, cancelable:Boolean = false) {
                        _eventData = eventData;
                        super(type, bubbles, cancelable);
                }
 
                override public function clone():Event {
                        return new AppEvent(type, eventData, bubbles, cancelable);
                }
 
                protected var _eventData:Object;
 
                public function get eventData():Object { return _eventData; }
        }
 
}

Как паковать:
Код AS3:

        private function completeHandler(event:Event):void {
 
            var loader:URLLoader = URLLoader(event.target);
            trace("completeHandler: " + loader.data);
 
            // Пересылаем наверх результат запроса
            var appEvent:AppEvent = new AppEvent("dataReceived",loader.data,true)
            dispatchEvent(appEvent);           
 
        }

Событие с данными надо отловить в родителе лоадера или вверх по иерархии. Чтобы событие не потерялось по дороге, надо следить, чтобы объекты, по которым оно должно пройти, были вложены друг в друга через addChild.


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

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