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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 15.01.2014, 16:26
grafillo! вне форума Посмотреть профиль Отправить личное сообщение для grafillo! Найти все сообщения от grafillo!
  № 1  
Ответить с цитированием
grafillo!

Регистрация: Sep 2011
Сообщений: 366
По умолчанию Перешёл на ООП не могу понять в чём ошибка

Не работает класс выдаёт кучу ошибок типо таких 1180: Call to a possibly undefined method URLRequest.
1120: Access of undefined property URLRequestMethod.

но я же объявил переменные requestmes и loader а он пишет что нет, что за фигня?

Код AS3:
package  {
	import flash.display.MovieClip;
	import flash.net.URLVariables;
 
 
	public class Move  {
		    public var  requestmes:URLRequest;
		    public var  loader:URLLoader ;
 
 
		public static  function sendData(vars:URLVariables,url:String) {
 
			requestmes  = new URLRequest;
			requestmes.url = url;
			requestmes.method = URLRequestMethod.POST;
			requestmes.data = vars;
 
			loader= new URLLoader();
			loader.dataFormat = URLLoaderDataFormat.TEXT;
			loader.load(requestmes);
 
			return loader.data;
 
			}	
 
 
 
	}
 
}

Старый 15.01.2014, 16:31
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 2  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
В статических методах могут использоваться только статические свойства или свойства объявленные локально.

Старый 15.01.2014, 16:47
alexandrratush вне форума Посмотреть профиль Отправить личное сообщение для alexandrratush Найти все сообщения от alexandrratush
  № 3  
Ответить с цитированием
alexandrratush
 
Аватар для alexandrratush

Регистрация: Jul 2013
Адрес: Днепр
Сообщений: 529
Отправить сообщение для alexandrratush с помощью ICQ Отправить сообщение для alexandrratush с помощью Skype™
Вам нужно сделать импорт всех классов, которые вы используете
Код AS3:
import flash.net.URLRequest;
import flash.net.URLLoader;
...
перенесите переменные requestmes и loader в тело метода, и скажу наперед что нужно дождаться от loader событие COMPLETE, иначе вы получите пустой loader.data.

Старый 15.01.2014, 18:40
grafillo! вне форума Посмотреть профиль Отправить личное сообщение для grafillo! Найти все сообщения от grafillo!
  № 4  
Ответить с цитированием
grafillo!

Регистрация: Sep 2011
Сообщений: 366
ага всё разобрался, терь другая запара, не могу додуматься как сделать статический метод для получения данных
Код AS3:
package  {
	import flash.display.MovieClip;
	import flash.net.*;
	import flash.events.Event;
 
 
	public class Move extends MovieClip {
		    public static var  requestmes:URLRequest;
			public static var  loader:URLLoader ;
			public static var  resp:XML;
 
 
		public static  function sendData(vars:URLVariables,url:String) {
 
 
			requestmes  = new URLRequest;
			requestmes.url = url;
			requestmes.method = URLRequestMethod.POST;
			requestmes.data = vars;
 
			loader= new URLLoader();
			loader.dataFormat = URLLoaderDataFormat.TEXT;
			loader.addEventListener(Event.COMPLETE, onLoad);
			loader.load(requestmes);
 
			function onLoad (e:Event){
				resp = XML(e.target.data);
				trace(resp);
				}
 
			return resp;
 
			}	
 
 
 
	}
 
}
действительно, функция сенд дата не может мне вернуть resp потомучто он только появляется после загрузки, а я хочу сделать стат метод который бы загружал данные и возварщал результат, как это сделать кто подскажет?

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

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
передавать в параметрах функции sendData - функцию, в которую нужно передать ответ
как-то так
Код AS3:
public static  function sendData(vars:URLVariables,url:String,callBack:Function):void {
 
 
			requestmes  = new URLRequest;
			requestmes.url = url;
			requestmes.method = URLRequestMethod.POST;
			requestmes.data = vars;
 
			loader= new URLLoader();
			loader.dataFormat = URLLoaderDataFormat.TEXT;
			loader.addEventListener(Event.COMPLETE, onLoad);
			loader.load(requestmes);
 
			function onLoad (e:Event){
				resp = XML(e.target.data);
				trace(resp);
                        callBack(resp);
		            }
 
 
 
			}
вызывать откуда-то так

Код AS3:
sendData({},"url- строка",onDataLoad );
 
private function onDataLoad(dataXml:XML):void{
    trace(dataXml);
}

Старый 15.01.2014, 21:12
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 6  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Функция в функции - это против правил и стандартов Как все говорят, это очень и очень нехорошо.

Старый 15.01.2014, 21:53
grafillo! вне форума Посмотреть профиль Отправить личное сообщение для grafillo! Найти все сообщения от grafillo!
  № 7  
Ответить с цитированием
grafillo!

Регистрация: Sep 2011
Сообщений: 366
хорошо, тогда как реализовать такой код без вложенных функций?

Старый 15.01.2014, 21:56
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 8  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Код AS3:
package 
{
	import flash.display.MovieClip;
	import flash.net.*;
	import flash.events.Event;
 
 
	public class Move extends MovieClip
	{
		public static var requestmes:URLRequest;
		public static var loader:URLLoader;
		public static var resp:XML;
 
 
		public static function sendData(vars:URLVariables,url:String)
		{
 
 
			requestmes = new URLRequest  ;
			requestmes.url = url;
			requestmes.method = URLRequestMethod.POST;
			requestmes.data = vars;
 
			loader= new URLLoader();
			loader.dataFormat = URLLoaderDataFormat.TEXT;
			loader.addEventListener(Event.COMPLETE, onLoad);
			loader.load(requestmes);
 
			return resp;
 
		}
 
 
		private static function onLoad(e:Event)
		{
			resp = XML(e.target.data);
			trace(resp);
		}
 
	}
 
}
Добавлено через 6 минут
Да, кстати, я так и не понял, зачем
Цитата:
class Move extends MovieClip

Старый 15.01.2014, 22:30
grafillo! вне форума Посмотреть профиль Отправить личное сообщение для grafillo! Найти все сообщения от grafillo!
  № 9  
Ответить с цитированием
grafillo!

Регистрация: Sep 2011
Сообщений: 366
экстендс мувиклип эт видать ненужно просто пробовал х)
ну и как в вашем примере вызывать эту функцию?
потомутчо return resp; - работать не будет

Старый 15.01.2014, 22:36
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 10  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Цитата:
как вызывать эту функцию?
Я вам просто показал, как вытащить её из другой функции.
А всё остальное Isfet правильно сказал.
Код AS3:
package 
{
	import flash.display.MovieClip;
	import flash.net.*;
	import flash.events.Event;
 
 
	public class Move extends MovieClip
	{
		public static var requestmes:URLRequest;
		public static var loader:URLLoader;
		public static var resp:XML;
		private static var callBack:Function;
 
 
 
		public static function sendData(vars:URLVariables,url:String, responseFunction:Function)
		{
 
 
			requestmes = new URLRequest  ;
			requestmes.url = url;
			requestmes.method = URLRequestMethod.POST;
			requestmes.data = vars;
 
			loader= new URLLoader();
			loader.dataFormat = URLLoaderDataFormat.TEXT;
			loader.addEventListener(Event.COMPLETE, onLoad);
			loader.load(requestmes);
 
			callBack = responseFunction;
 
		}
 
 
		private static function onLoad(e:Event)
		{
			resp = XML(e.target.data);
			trace(resp);
			callBack(resp);
		}
 
	}
 
}
Добавлено через 36 минут
И ещё, я бы вам советовал придержаться правильного стиля написания, и все переменные обьявлять как private, а там где они действительно нужны снаружи класса, либо получать через гет-методы(getName, getValue), или через геттеры, ну или на крайняк уже открыть в internal/public.

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:54.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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