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

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

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

Регистрация: Jan 2007
Сообщений: 50
Question Action Script: программное прикрепления символа кнопки - не работает поведения кнопни

Доброе утро (день, вечер, ночь, нужное выделить мышкой), знатоки flash!
Обращается к вам новичок за советом по Action Script:

В ходе выполнения проекта происходит обработка следующего кода (код выполняется внутри цикла, где-то загодя определяется переменная i, предыстория, по сути, не важна):



Код:
//...
_root.createEmptyMovieClip("btn"+i, i);
var b = _root["btn"+i];
b._x = 300;
b._y = 180;
b.attachMovie("back", "back", this.getNextHighestDepth());
//...
//Далее идет обработка других данных, чуть позднее устанавлявается ширина кнопки:
b.back._width = b.tf._width+20;
В общем, здесь я создаю муви-клип и добавляю в него символ кнопки back

Теперь по символу кнопки - это обыкновенный клип типа "кнопка", у которого определены состояния up, down и over.

Мне надо, чтобы все эти состояния работали, и при использовании кнопки способом, указанным выше (когда ее прикрепляют с использованием attachMovie (или тут должна быть какая-то другая функция?))

Однако сейчас работает только одно состояние - up (кнопка находится все время в этом состоянии и его не меняет)

Интересен факт, что когда эту же самую кнопку прикрепляешь в любое место непрограммным путем (а путем перетаскивания иконки в соответствующий клип из библиотеки) - кнопка ведет себя так, как задуманно

Подскажите, где я ошиблась, товарищи - а то у меня ступор...

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

Регистрация: Jul 2006
Адрес: Земля>Россия>Вологда
Сообщений: 3,056
Отправить сообщение для CorC с помощью ICQ Отправить сообщение для CorC с помощью MSN Отправить сообщение для CorC с помощью Skype™
не
Код:
b.attachMovie("back", "back", this.getNextHighestDepth());
а
Код:
b.attachMovie("back", "back", b.getNextHighestDepth());
и непонятно где функции реакции на нажатие кнопки
__________________
"We Are The Champions My Friends!" Queen

Старый 15.01.2007, 11:48
taifa вне форума Посмотреть профиль Отправить личное сообщение для taifa Найти все сообщения от taifa
  № 3  
Ответить с цитированием
taifa

Регистрация: Jan 2007
Сообщений: 50
прикрепила вырезки из исходника, касаемые непосредственно этих мест.
Здесь я пыталась сделать меню, генерируемое по данным из html (поэтому для открытия и просмотра флешки надо использовать html-файл, прикрепленный к архиву)
на дизайн и визуальное представление всего этого месива не смотрите - это все тестовые примеры. Мне сейчас главное разобраться, как это делать.

Проблеммное место - Actions в клипе menu - надо искать внутри цикла.
Вложения
Тип файла: rar source.rar (8.6 Кб, 44 просмотров)


Последний раз редактировалось taifa; 15.01.2007 в 12:01.
Старый 15.01.2007, 11:56
taifa вне форума Посмотреть профиль Отправить личное сообщение для taifa Найти все сообщения от taifa
  № 4  
Ответить с цитированием
taifa

Регистрация: Jan 2007
Сообщений: 50
Цитата:
Сообщение от CorC
и непонятно где функции реакции на нажатие кнопки
Дальше по коду идет определение обработчика onpress только что созданного клипа

Код:
b.onPress = function() 
{
   getURL(this.link, "_self");
};
Пыталась также навешивать обработчики непосредственно на кнопку:
Код:
mc.onRollOut =function()
{
	this.gotoAddStop("up");
};
mc.onRollOver=function()
{
	this.gotoAddStop("over");
};
mc.onPress=function()
{
	this.gotoAddStop("down");
};
(метки up, over, down предварительно навешаны на соответствующий кадр)

Только тут меня терзали сомнения, зачем я это делаю, вроде ж эти события уже определены внутри самой кнопки (или я что-то неправильно понимаю, я флеш изучаю четвертый день). А поскольку данная вставка не дала результатов, это место я закомментировала.


Последний раз редактировалось taifa; 15.01.2007 в 11:59.
Старый 15.01.2007, 12:07
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 5  
Ответить с цитированием
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
У тебя кнопка "b", а не "mc"
Код:
b.onRollOut =function(){}

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

Регистрация: Jan 2007
Сообщений: 50
внесла следующее исправление:
Код:
b.onRollOut =function()
{
	back.gotoAddStop("up");
};
b.onRollOver=function()
{
	back.gotoAddStop("over");
};
b.onPress = function() 
{
	getURL(this.link, "_self");
	back.gotoAddStop("down");
};
А вообще появилась мысль. Если конвертировать символ back в обычный мувик, то каким должен быть код, чтобы из клипа b (который создается в примере выше) вызвать и проиграть определенные кадры этого нового мувика кнопки (не все, а только те, которые я предполагаю использовать для обработчика конкретного события)?

Если просто так конвертировать - получается, что с самого начала (вне зависимости от события) проигрываются все кадры по кругу. Смотрится ужасающе и рябит в глазах.
Вложения
Тип файла: rar source.rar (7.3 Кб, 48 просмотров)


Последний раз редактировалось taifa; 15.01.2007 в 12:28.
Старый 15.01.2007, 12:45
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 7  
Ответить с цитированием
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
вот правильный код на кнопки в последнем исходнике.
Код:
	b.onRollOut =function()
	{
		this.back.gotoAndStop("up");
	};
	b.onRollOver=function()
	{
		this.back.gotoAndStop("over");
	};
	b.onPress = function() 
	{
		getURL(this.link, "_self");
		back.gotoAddStop("down");
	};
gotoAndStop вместо gotoAddStop ))
и this.back вместо back
плюс в первом кадре символа back в библиотеке пишешь
Код:
stop();
и все шоколадно.

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

Регистрация: Jan 2007
Сообщений: 50
Ну у меня и невнимательность... Извечная проблема.
2Kikasso: Спасибо большое. Заработало.Только есть один вопрос в догонку: если на действие надо прикрепить нексколько кадров (чтобы они были воспроизведены и далее клип вернулся к исходному состоянию (метка up)), как я должна поступить?


Последний раз редактировалось taifa; 15.01.2007 в 12:53.
Старый 15.01.2007, 13:04
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 9  
Ответить с цитированием
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
это сложнее. на действие всмысле на клик?

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

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
давай поступим так:
Код:
b.onPress = function() 
{
this.back.gotoAndStop("down");
};
b.onRelease = function() 
{
getURL(this.link, "_self");
this.back.gotoAndPlay("release");
};
открываешь свой "back"
добавляешь метку "release", после нее анимация, в последнем кадре анимации
Код:
gotoAndStop("up");
Насчет внимательности - у меня та же проблема, ключи на шею вешаю чтобы не потерять ))
Поздравляю с прибытием!


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

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

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


 


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


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