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

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

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

Регистрация: Dec 2006
Сообщений: 207
По умолчанию Метод выдаёт undefined

У меня есть класс :
Код:
class Curs extends MovieClip {
	private var onEnterFrame:Function;
	public function Curs() {
		onEnterFrame = moveCurs;
	}
        public function moveCurs(x:Number,y:Number,z:Number):Void {
                  _y = _root._xmouse;
                  _x = _root._ymouse;
                  trace(x);
                  trace(y);
                  trace(z);
        }
}
И когда я в самом сценарии запускаю метод
moveCurs(1,2,3);
Мне в Output'e постоянно выдаёт undefined.
Почему так происходит ?

Старый 01.06.2008, 17:37
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Это onEnterFrame так делает, прямой вызов выведет 1, 2, 3
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 01.06.2008, 17:52
Dr.XxX вне форума Посмотреть профиль Отправить личное сообщение для Dr.XxX Найти все сообщения от Dr.XxX
  № 3  
Ответить с цитированием
Dr.XxX

Регистрация: Dec 2006
Сообщений: 207
А почему тогда он не видит, переменные которые были заданы в методе ?
Вот :
Код:
  public function moveCurs(x:Number,y:Number,z:Number):Void {
                  _y = x;
                  _x = _root._ymouse;
                  x++;
                  trace(x);
                  trace(y);
                  trace(z);
        }
moveCurs(10,10,10);
Сначало он(Объект) встаёт на положение 11 и всё, дальше стоп.

Старый 01.06.2008, 17:59
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 4  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
onEnterFrame не передает аргументы.
Если хотите с аргументами, то создаете у себя такой класс (надеюсь знаете, что для пакетов надо создать папки):
Код:
/**
* Класс ru.inils.framework.Delegate, модифицированный mx.utils.Delegate. Выполнение функции в заданной области видимости с передачей аргументов.
*
* @author	iNils
* @version	1.2
* @see		mx.utils.Delegate
* Изменения:
* 	1.2 (xx.xx.07)
* 	[*]	Переехал из пакета ru.inils.util.Delegate
*
*	1.1 (xx.xx.07)
* 	[+]	Добавлена возможность передавать аргументы "родного" метода
*
* 	1.0 (xx.xx.06)
*/

class ru.inils.framework.Delegate {
	/**
	* Метод, передает событие в заданную область видимость и в заданный метод.
	*
	* @usage			public static create (obj:Object, func:Function, arg:Array) : Function
	* @param	obj		Object - Объект, заданная область видимости.
	* @param	func	Function - Метод, обработчик события.
	* @param	arg		Array [дополнительный параметр] - Массив передаваемых аргументов, замещающий аргументы передаваемые "родным" событием. По умолчанию возращаются аргументы переданный при вызове "родного" события.
	* @return  Function	- Функция обработчик.
	*/
	public static function create (obj:Object, func:Function, arg:Array):Function {
		var f = function () {
			var targetTemp:Object = arguments.callee.target;
			var funcTemp:Function = arguments.callee.func;
			var argTemp:Array = null;
			if (arguments.callee.arg) {
				argTemp = arguments.callee.arg;
			} else {
				argTemp = arguments;
			}
			return funcTemp.apply (targetTemp, argTemp);
		};
		f.target = obj;
		f.func = func;
		f.arg = arg;
		return f;
	}
}
Импортируете его в свой класс, а вызов делаете так:
Код:
onEnterFrame = Delegate.create (this, moveCurs, [1,2,3]);
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

Регистрация: Dec 2006
Сообщений: 207
Спасибо.

А, чтобы moveCurs(); заработал, как надо, тогда надо x,y,z объявить заранее ?
Код:
private var x:Number = 10;
private var y:Number = 10;
private var z:Number = 10;

Старый 01.06.2008, 18:16
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Значения задаются в конструкторе, а не при объявлении.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 01.06.2008, 18:50
Dr.XxX вне форума Посмотреть профиль Отправить личное сообщение для Dr.XxX Найти все сообщения от Dr.XxX
  № 7  
Ответить с цитированием
Dr.XxX

Регистрация: Dec 2006
Сообщений: 207
спасибо

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

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

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


 


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


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