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

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

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

Регистрация: Dec 2009
Сообщений: 125
Записей в блоге: 1
По умолчанию Изменение имени переменной налету

Я начинающий AS-программист. Встретился с проблемой и нуждаюсь в помощи. На форуме уже создавались подобные темы (но без примеров). Создалось ощущение что в Actionscript не предусмотрено такое.
Задача: Сделать в схеме при наведении на объекты появление фотографий (без подгрузки из внешних файлов, а мувиклипом)
Мой вариант решения: Мувиклипы разложить по сцене со свойством alpha=0, изменять это свойство при наведении указателем на соответствующий объект и его "убиранием" оттуда.

Код AS3:
function dvizhenie(Photo1):void {
	Photo1.alpha=1;
	Photo1.addEventListener(Event.ENTER_FRAME, onEnterFrame);
	function onEnterFrame(event:Event):void {
		if (mouseX>=350) {
			Photo1.x=mouseX-Photo1.width-5;
			Photo1.y=mouseY-Photo1.height-5;
		}
		else if (mouseY>=165) {
			Photo1.x=mouseX+5;
			Photo1.y=mouseY-Photo1.height-5;
		} else {
			Photo1.x=mouseX+5;
			Photo1.y=mouseY+5;
		}
	}
}
function is4ez(Photo2):void {
	Photo2.alpha=0;
}
TRK.addEventListener(MouseEvent.MOUSE_OVER,addPhoto);
function addPhoto(event:MouseEvent):void {
	dvizhenie(TRK_Photo);
}
TRK.addEventListener(MouseEvent.MOUSE_OUT,removePhoto);
function removePhoto(event:MouseEvent):void {
	is4ez(TRK_Photo);
}
Проблема: При добавлении новых мувиклипов растет код. ХОтелось бы его сделать универсальным (для использования в других разработках), чтобы имена Instance name заносились программистом в массив и далее в цикле обрабатывалась универсальная функция от переменных, содержащихся в значении элементов массива.
В языке Си (мне говорили) есть какой-то указатель, начинающийся с символа @. В AS 3.0 такое не нашел. Как обойти и сделать другим способом.
Мне нужно в результате иметь

Код:
<мувиклип i-ый>.addEventListener(MouseEvent.MOUSE_OVER,<функция i-ая>);
function <функция i-ая>(event:MouseEvent):void {
	dvizhenie(мувиклип i-ый + Photo);
}

Старый 10.12.2009, 15:14
lighto вне форума Посмотреть профиль Отправить личное сообщение для lighto Найти все сообщения от lighto
  № 2  
Ответить с цитированием
lighto
 
Аватар для lighto

Регистрация: Aug 2009
Адрес: Казахстан Усть-Каменогорск
Сообщений: 249
хм... циклом если хотите пользоваться динамикой. и пускать его столько раз сколько будет длинна массива вот и все функции вынесите в отдельный класс и оттуда тегайте их не нужно будет кучи кода)) а так думаете правильно, а что там за @ D СИ++? В AS3 ЕСТЬ @Emded но это вряд ли то что вам нужно.
__________________
Flex+AS3 good)

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

Регистрация: Dec 2009
Сообщений: 125
Записей в блоге: 1
lighto, С классами буду разбираться (пока не силен). Возможно это выход. Про указатель в Cи я понял так: он может сделать переменным кусочек кода. Что и нужно мне в AS 3.
Как бы еще объяснить...
В PHP есть такой способ изменения кода HTML echo () - все, что мы напишем переменные или текст в скобках еще раз обработаются браузером. Также мне хочется и над кодом для флеша работать.
iflamberg Я так понял, в предложенном скрипте создаются пронумерованные события. А как же мне их применить для мувиклипов? Названия мувиклипов будут разные или даже если я их буду нумеровать, как уйти от постоянного добавления новых функций?..

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

Регистрация: Jan 2009
Сообщений: 1,651
Код AS3:
for (var i:Number=0; i<10; i++){
  var mc:MovieClip = new MovieClip();
  mc.param = i;
  mc.addEventListener(MouseEvent.MOUSE_OVER,mouseOverHandler);
}
 
 
function mouseOverHandler(event:MouseEvent):void {
  trace (event.target.param);
}

Старый 11.12.2009, 14:00
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 5  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Вам не нужен "переменный кусочек кода", у Вас же абсолютно идентичные действия (функции) над переменными объектами - а это параметры функций, они и есть переменные по самому своему смыслу.
__________________
Reality.getBounds(this);

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

Регистрация: Jan 2009
Сообщений: 1,651
Нет тут пронумерованных событий. На все экземпляры mc вешается один и тот же обработчик mouseOverHandler. У каждого мувика mc создается параметр param, который его позволяет однозначно идентифицировать. Когда мыша прошла по одному из mc, в event.target будет передан именно тот мувик, по которому мыша прошла, и мы находим его индекс из param.
Вообще говоря можно было вообще повесить только один mouseOverHandler на мувик, являющийся родителем для всех mc, все равно бы при проходе по mc в e.target.param - был бы индекс мувика.
__________________
мой пустой блог

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

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

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


 


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


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