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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 27.03.2008, 16:41
vitalian вне форума Посмотреть профиль Отправить личное сообщение для vitalian Найти все сообщения от vitalian
  № 1  
Ответить с цитированием
vitalian
[+4 21.04.08]

Регистрация: Mar 2008
Сообщений: 14
По умолчанию onPress не вызывает функцию

Привет уважаемому All'у!

Flash-MX 2004.
Не серчайте, вопрос примитивный, не знаю как его через поиск искать.

Код:
my_mc.onPress = function()
{
trace("test");
}
- это работает.

Код:
function test()
{
trace("test");
}

my_mc.onPress = test();
- а это вызывает trace сразу после запуска и мувик больше на клики не реагирует.
Что за беда? а если функция большая, и ее надо вызывать с разными параметрами для кучи разных мувиков - для каждого копипастить код заново?

Старый 27.03.2008, 16:44
konstantin.noir вне форума Посмотреть профиль Отправить личное сообщение для konstantin.noir Найти все сообщения от konstantin.noir
  № 2  
Ответить с цитированием
konstantin.noir

Регистрация: Jan 2008
Сообщений: 24
Нужно писать
my_mc.onPress = test;
без скобок, иначе происходит вызов функции test() сразу

Старый 27.03.2008, 16:46
vitalian вне форума Посмотреть профиль Отправить личное сообщение для vitalian Найти все сообщения от vitalian
  № 3  
Ответить с цитированием
vitalian
[+4 21.04.08]

Регистрация: Mar 2008
Сообщений: 14
О!
Гран-мерси)

...хотя подождите - а как тогда функции параметры передавать?

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

Регистрация: Apr 2007
Сообщений: 1,369
Через
Код:
Delegate
Через обычный передать можно так:
Код:
import mx.utils.Delegate;
function a () {
    trace (arguments.caller.id);
    trace (arguments.caller.trash);
}
var f:Function = Delegate.create (this, a);
f.id = 'Hello';
f.trash = mc._name;
mc.onPress = f;
Но это не удобно.

iNils, если отпишет - свой Делегат предложит
Я использую Proxy - http://www.person13.com/articles/proxy/Proxy.htm
Там третьим и т.д. параметром можно передавать функции, что надо:
Код:
myDelegate(this, a, param1, param2...)
Чем будет пользоваться Вы - решать Вам.
__________________
john


Последний раз редактировалось Molecula; 27.03.2008 в 18:44.
Старый 28.03.2008, 02:37
vitalian вне форума Посмотреть профиль Отправить личное сообщение для vitalian Найти все сообщения от vitalian
  № 5  
Ответить с цитированием
vitalian
[+4 21.04.08]

Регистрация: Mar 2008
Сообщений: 14
у-угу...
но разве Delegate - это AS2.0? Мука читаю, про такого зверя пока ничего не встречал. Хелп этого слова тоже не знает, компилятор ругается: "The class 'mx.utils.Delegate' could not be loaded."

Старый 28.03.2008, 10:44
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
А у вас и не AS2, судя по вашему коду.

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

блогер
Регистрация: Nov 2007
Адрес: Киев
Сообщений: 557
Записей в блоге: 2
Если принципиально делать это во Flash-MX 2004 (четырехлетней давности софт, между прочим), то пишите что-то вроде
Код:
my_mc.onPress=function(){
test(params);
}

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

Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
Цитата:
Если принципиально делать это во Flash-MX 2004 (четырехлетней давности софт, между прочим), то пишите что-то вроде
Delegate прекрасно компилится под 7-ку...возможно у вас потерялась либа mx.utils...скачайте где-нибудь
__________________
Flash Developer
Папа TDP4 Team Battle

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

Регистрация: Apr 2007
Сообщений: 1,369
Анонимные функции лучше избегать.
Ну раз у Вас 6-ка, то можно делать так, не одной строкой передавать параметр:
Код:
function a() {
   var p2 = this._name;
   b(p1, p2);
}
function b(o, o2){
    trace(o);
    trace(o2);
}
p1 = 'Hello';
mc.onPress = a;
__________________
john

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

блогер
Регистрация: Nov 2007
Адрес: Киев
Сообщений: 557
Записей в блоге: 2
Цитата:
Анонимные функции лучше избегать.
Эм... Почему?

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

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

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


 


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


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