Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.12.2009, 17:27
Oli Short вне форума Посмотреть профиль Отправить личное сообщение для Oli Short Найти все сообщения от Oli Short
  № 1  
Ответить с цитированием
Oli Short

Регистрация: Aug 2009
Сообщений: 38
По умолчанию Проблема с созданием класса, не возвращает значение

Здравствуйте. Почитал мануал по созданию класса. Пишу простой класс.

vkomandeClass.as
Код AS3:
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;
		}
 
    }
}
на главной фрейма
Код AS3:
import vkomande.files.vkomandeClass
 
 
var vkm:vkomandeClass = new vkomandeClass();
vkm.getUrl = 'a=1&b=2&c=3';
vkm.getXML();
trace(vkm.resultData);
хочу просто возвращать значение исполняемого php файла. значение всегда null. Подскажите пожалуйста в чем моя ошибка. Спасибо!

Старый 12.12.2009, 17:49
  № 2  
Ответить с цитированием
Xero201
Guest

Сообщений: n/a
trace(vkm.resultData); - выполнится не дожидаясь события Event.COMPLETE
Можно сделать например так:
в классе vkomandeClass:
Код AS3:
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));
}
а в главном:
Код AS3:
var vkm:vkomandeClass = new vkomandeClass();
vkm.addEventListener(vkomandeClass.GET_RESULT, viewResult);
function veiwResult(e:Event){
trace(vkm.resultData);
//или trace(e.target.resultData);
}

Старый 12.12.2009, 18:02
Oli Short вне форума Посмотреть профиль Отправить личное сообщение для Oli Short Найти все сообщения от Oli Short
  № 3  
Ответить с цитированием
Oli Short

Регистрация: Aug 2009
Сообщений: 38
Исправил
Код AS3:
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));
		}
 
    }
}
Код AS3:
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);
}
ругается на
Цитата:
Call to a possibly undefined method dispatchEvent.
Код AS3:
dispatchEvent(new Event(resultXML));

Старый 12.12.2009, 18:25
  № 4  
Ответить с цитированием
Xero201
Guest

Сообщений: n/a
dispatchEvent - это способ самостоятельно вызвать какое-нибудь событие. Но чтобы это сработало, класс vkomandeClass (кстати, классы обычно называют с большой буквы для всеобщего удобства) должен быть расширен от EventDispatcher
(вообще когда чего-то не находит, очень легко выяснить причину с помощью встроенного хэлпа)

Старый 12.12.2009, 18:27
Oli Short вне форума Посмотреть профиль Отправить личное сообщение для Oli Short Найти все сообщения от Oli Short
  № 5  
Ответить с цитированием
Oli Short

Регистрация: Aug 2009
Сообщений: 38
Код AS3:
должен быть расширен от EventDispatcher
не понял предложение, что значит расширен?

Старый 12.12.2009, 18:42
  № 6  
Ответить с цитированием
Xero201
Guest

Сообщений: n/a
Во Flash для решения многих задач существуют уже готовые классы. Например SimpleButton – для создания кнопок, MovieClip – для клипов, TextField для текстовых полей и т.д. Когда нужно сделать похожий по функционалу класс (либо использовать один из них),то велосипед не изобретают, а берут за основу уже готовый и расширяют его (extends) или наследуют, если так привычнее). Делается это вот так:
public class vkomandeClass extends EventDispatcher{

ЗЫ.
скачай какую-нибудь книжку и почитай, будет легче

Старый 12.12.2009, 18:55
Oli Short вне форума Посмотреть профиль Отправить личное сообщение для Oli Short Найти все сообщения от Oli Short
  № 7  
Ответить с цитированием
Oli Short

Регистрация: Aug 2009
Сообщений: 38
Код AS3:
Делается это вот так:
public class vkomandeClass extends EventDispatcher{
я понял о чем ты. переделал

Код AS3:
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'));
		}
 
    }
}
Код AS3:
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(e);
}
ошибок не выдает. trace вообще ничего не выводит

Старый 12.12.2009, 19:22
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 8  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
Но ты же не вызываешь getXML().
Нет события — нет реакции на событие.

Старый 12.12.2009, 19:37
Oli Short вне форума Посмотреть профиль Отправить личное сообщение для Oli Short Найти все сообщения от Oli Short
  № 9  
Ответить с цитированием
Oli Short

Регистрация: Aug 2009
Сообщений: 38
функцию getXML() поместил в конструктор чтобы в фрейме не вызывать. все равно молчит все. брожу вокруг да около. ошибок не нахожу. делал по примеру

Код AS3:
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'));
		}
 
    }
}
Код AS3:
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);
 
}
Добавлено через 12 минут
разобрался

Старый 12.12.2009, 20:09
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 10  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
Попробуй так. Работает.

Код AS3:
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'));
	}
 
  }
}
Код AS3:
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.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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