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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 18.03.2014, 10:45
юля_программист вне форума Посмотреть профиль Отправить личное сообщение для юля_программист Найти все сообщения от юля_программист
  № 1  
Ответить с цитированием
юля_программист
 
Аватар для юля_программист

Регистрация: Oct 2012
Адрес: 59°57′ с. ш. 30°19′ в. д.
Сообщений: 49
По умолчанию Fscommand и функция

Здравствуйте!
Есть много элементов, при клике на какой либо через fscommand передается ассоциация с ним,и дальше обрабатывается. У меня очень много элементов и каждый раз писать

Код AS1/AS2:
клип.onPress=function(){
fscommand("команда")
}
мне не очень хочется, делаю через функцию и класс. Но сталкиваюсь с проблемой при клике fscommand не подхватывает мое значение((Есть ли способ написать какую либо функцию, что не писать столько кода для каждого элемента, а создать функцию и менять только два параметра?
Это то что я написала, может быть вы предложите реализацию лучше)
Код AS1/AS2:
function ClickElement(mc:MovieClip,command){
	mc.onPress=function(command){
		fscommand(command)
	}
}

Старый 18.03.2014, 11:32
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 2  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
command по-любому нужно где-то прописывать, этого не избежать. Можно немного автоматизировать этот процесс, формализовав текст команды. Например, пусть будет каждая команда - это строка "comm_N", где N - грубо говоря номер команды. Точно так же можно формализовать имена клипов - "clip_N". Тогда можно назначить каждому клипу свою команду и обработчик onPress, пробежав по ним циклом:

Код AS1/AS2:
for(var i = 0; i< 100; i++){
  this["clip_" + i].command = "comm_" +i;
  this["clip_" + i].onPress = ClickElement;
}
 
function ClickElement(){
  var command = this.command;
  fscommand(command);
}
Но для этого нужно подчинить имена команд и клипов выбранному правилу формализации. То, что хочется вам, передавать параметры в оnPress, нельзя. Но в этом обработчике мы можем обратиться к клипу, на котором была нажата мышка, как this. Т.е. роль такого параметра будет играть свойство command в каждом клипе, индивидуальное для каждого клипа и которое нужно предварительно задать, вписав туда текст команды. А в обработчике onPress можно просто вынуть значение этого свойства var command = this.command; и отдать в fscommand.
Еще о this. В цикле, где перебираются клипы, this должен указывать на контейнер, в котором находятся клипы clip1, clip2 и т.д. Например, если они все лежат на сцене, то this - это _root. Если клипы заключены в другой клип, то this - это ссылка на это клип-контейнер.


Последний раз редактировалось alexcon314; 18.03.2014 в 11:46.
Создать новую тему Ответ Часовой пояс GMT +4, время: 16:16.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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