![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Aug 2009
Сообщений: 38
|
Здравствуйте. Почитал мануал по созданию класса. Пишу простой класс.
vkomandeClass.as package vkomande.files { import flash.display.*; import flash.events.*; import flash.net.*; public class vkomandeClass { public var getUrl:String; public var resultData:String; public function vkomandeClass() { } public function getXML() { var xmlLoader:URLLoader = new URLLoader(new URLRequest("http://vkomande/md5.php?"+getUrl)); xmlLoader.addEventListener(Event.COMPLETE, viewXML); } public function viewXML(e:Event):void { var returnData:String = e.target.data; resultData = returnData; } } } хочу просто возвращать значение исполняемого php файла. значение всегда null. Подскажите пожалуйста в чем моя ошибка. Спасибо! |
|
|||||
|
Guest
Сообщений: n/a
|
trace(vkm.resultData); - выполнится не дожидаясь события Event.COMPLETE
Можно сделать например так: в классе vkomandeClass: public static const GET_RESULT:String = "getResult"; //.. public function viewXML(e:Event):void { var returnData:String = e.target.data; resultData = returnData; dispatchEvent(new Event(GET_RESULT)); } |
|
|||||
|
Регистрация: Aug 2009
Сообщений: 38
|
Исправил
package vkomande.files { import flash.display.*; import flash.events.*; import flash.net.*; public class vkomandeClass { public var getUrl:String; public var resultData:String; public static const resultXML:String = 'vasys'; public function vkomandeClass() { } public function getXML() { var xmlLoader:URLLoader = new URLLoader(new URLRequest("http://vkomande/md5.php?"+getUrl)); xmlLoader.addEventListener(Event.COMPLETE, viewXML); } public function viewXML(e:Event):void { var returnData = e.target.data; resultData = returnData; dispatchEvent(new Event(resultXML)); } } } import vkomande.files.vkomandeClass var vkm:vkomandeClass = new vkomandeClass(); vkm.getUrl = 'a=1&b=2&c=3'; vkm.addEventListener(vkomandeClass.resultXML, viewResult); function viewResult(e:Event){ trace(vkm.resultData); } Цитата:
|
|
|||||
|
Guest
Сообщений: n/a
|
dispatchEvent - это способ самостоятельно вызвать какое-нибудь событие. Но чтобы это сработало, класс vkomandeClass (кстати, классы обычно называют с большой буквы для всеобщего удобства) должен быть расширен от EventDispatcher
(вообще когда чего-то не находит, очень легко выяснить причину с помощью встроенного хэлпа) |
|
|||||
|
Регистрация: Aug 2009
Сообщений: 38
|
|
|
|||||
|
Guest
Сообщений: n/a
|
Во Flash для решения многих задач существуют уже готовые классы. Например SimpleButton – для создания кнопок, MovieClip – для клипов, TextField для текстовых полей и т.д. Когда нужно сделать похожий по функционалу класс (либо использовать один из них),то велосипед не изобретают, а берут за основу уже готовый и расширяют его (extends) или наследуют, если так привычнее). Делается это вот так:
public class vkomandeClass extends EventDispatcher{ ЗЫ. скачай какую-нибудь книжку и почитай, будет легче |
|
|||||
|
Регистрация: Aug 2009
Сообщений: 38
|
я понял о чем ты. переделал
package vkomande.files { import flash.display.*; import flash.events.*; import flash.net.*; public class vkomandeClass extends EventDispatcher { public var getUrl:String; public function vkomandeClass() { //getXML(); } public function getXML():void { var xmlLoader:URLLoader = new URLLoader(new URLRequest("http://vkomande/md5.php?"+getUrl)); xmlLoader.addEventListener(Event.COMPLETE, viewXML); } public function viewXML(e:Event):void { //var returnData = e.target.data; //resultData = returnData; dispatchEvent(new Event('test')); } } } |
|
|||||
|
Но ты же не вызываешь getXML().
Нет события — нет реакции на событие. |
|
|||||
|
Регистрация: Aug 2009
Сообщений: 38
|
функцию getXML() поместил в конструктор чтобы в фрейме не вызывать. все равно молчит все. брожу вокруг да около. ошибок не нахожу. делал по примеру
package vkomande.files { import flash.display.*; import flash.events.*; import flash.net.*; public class vkomandeClass extends EventDispatcher { public var getUrl:String; public var resultData:String; public function vkomandeClass() { var xmlLoader:URLLoader = new URLLoader(new URLRequest("http://vkomande/md5.php?"+getUrl)); xmlLoader.addEventListener(Event.COMPLETE, viewXML); } //public function getXML():void //{ //var xmlLoader:URLLoader = new URLLoader(new URLRequest("http://vkomande/md5.php?"+getUrl)); //xmlLoader.addEventListener(Event.COMPLETE, viewXML); //} public function viewXML(e:Event):void { var returnData = e.target.data; resultData = returnData; dispatchEvent(new Event('test')); } } } import vkomande.files.vkomandeClass var vkm:vkomandeClass = new vkomandeClass(); vkm.getUrl = 'a=1&b=2&c=3'; vkm.addEventListener("test", test); function test(e:Event) { trace(vkm.resultData); } разобрался |
|
|||||
|
Попробуй так. Работает.
package classes{ import flash.display.*; import flash.events.*; import flash.net.*; public class VkomandeClass extends EventDispatcher{ public var getUrl : String; public var resultData : String; private var xmlLoader:URLLoader public function VkomandeClass(){ xmlLoader = new URLLoader(new URLRequest("http://vkomande/md5.php?"+getUrl)); xmlLoader.addEventListener(Event.COMPLETE, viewXML); } public function getXML():void{ var request : URLRequest = new URLRequest("xmlFile.xml") var xmlLoader : URLLoader = new URLLoader(request); xmlLoader.addEventListener(Event.COMPLETE, viewXML); xmlLoader.addEventListener(IOErrorEvent.IO_ERROR, sendErrorMesge); } private function viewXML(e:Event):void{ var returnData = e.target.data; resultData = returnData; dispatchEvent(new Event('loadComplete')); } private function sendErrorMesge(e : IOErrorEvent):void{ dispatchEvent(new Event('loadFailed')); } } } import classes.VkomandeClass; var vkm : VkomandeClass = new VkomandeClass(); vkm.getUrl = 'a=1&b=2&c=3'; vkm.addEventListener("loadComplete", complMessage); vkm.addEventListener("loadFailed", failMessage); vkm.getXML(); function complMessage(e : Event) { trace("Загрузка успешно завершена"); trace(vkm.resultData); } function failMessage(e : Event){ trace("При загрузке возникли ошибки"); } Последний раз редактировалось ChuwY; 12.12.2009 в 20:21. |
![]() |
![]() |
Часовой пояс GMT +4, время: 18:24. |
|
|
« Предыдущая тема | Следующая тема » |
|
|