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

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

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

Регистрация: Apr 2012
Сообщений: 80
По умолчанию Кнопка в одном кадре не жмет мувиклип в другом

Здравствуйте.
В 1 кадре у меня есть код AS2

Код AS1/AS2:
 
_root.kvadrat.onPress=function() {
		trace ("Hit hit");
}
в 6 кадре
Код AS1/AS2:
stop();
Так же в шестом кадре клип kvadrat.

Почему-то код из 1 кадра не срабатывает, а если вставить в 6, то работает.
Как оставить код в первом кадре и при том, чтобы квадратик реагировал, когда на него нажимаем.
(как управлять мувиклипом, имея код в 1 кадре)


2) В каком кадре лучше размешать код? По опыту кажется не всегда в 1 он срабатывает, а бывает со 2 начинает.


Спасибо и всем хорошим выходных!
Вложения
Тип файла: zip prototype.zip (5.0 Кб, 26 просмотров)

Старый 15.06.2012, 19:36
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Так в первом кадре нет мувика kvadrat, поэтому и не работает.
Когда вы назначаете обработчик, объект, для которого вы это делаете, должен присутствовать в области видимости.

Это по типу как громко сказать в пустой комнате:
- Вася, как войдешь сюда, сразу сбегай за закуской!
.. тишина ...ничего не происходит в комнату входит Вася.
...
- Так что ж ты не медлишь, Вася, что ж ты не идешь?
- Куда?!..Вы кто такой вообще?

Это же соображение относится ко второму вашему вопросу. Если задаете любые свойства объектам, назначаете обработчики, объекты должны присутствовать в области видимости.
Другое дело - объявление функции. Функцию можно объявить и без этого.
__________________
Идите первым!


Последний раз редактировалось mooncar; 15.06.2012 в 19:44.
Старый 18.06.2012, 11:23
dkart01 вне форума Посмотреть профиль Отправить личное сообщение для dkart01 Найти все сообщения от dkart01
  № 3  
Ответить с цитированием
dkart01

Регистрация: Apr 2012
Сообщений: 80
Ясно. Про Васю очень хорошая история) А можно ли сделать так, чтобы так громко позвать Васю, что даже он в другой комнате услышит? Или использовать Телефон?

Соответственно:
1) Думал, что есть объект слушатель Listener, который как бы будет пелинговать, посылать импульсные запросы и при запуске кадра с Kvadrat включит мою функцию или в моём предположении кроется ошибка относительно Listenera?
2) Стараются ли выносить профи Flasha весь код в первый кадр, используя какие-то маневры. Или они просто создают код и соответствующую ему временную шкалу у объекта в IDE, чтобы они видели друг друга (в похожей моей задаче).

3) Для чего во флеше в Symbol Properties есть ActionScript Linkage и Export in frame 1 и Ecport for Action Script

Добавлено через 4 минуты
4) Мысли по оптимизации. А может всё оставить как у меня есть в файле prototype.zip, код в первом кадре, (его можно будет править), а вот вызов этого кода поместить на одном кадре с Kvadratom ?

Старый 18.06.2012, 11:52
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 4  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Знаете, к сожалению, сейчас не могу изучить ваш исходник, но общая мысль такая, она как бы призвана дать ответ на ряд ваших вопросов.

Объявляете функции в первом кадре, а назначаете их как обработчики в нужный момент, когда объект появляется.
Например:

1. 1 кадр.
Код AS1/AS2:
function btnOnRelease() 
{
   //сделать то-то (тут можно ссылаться на несуществующие в данный момент объекты)
}
2. Нужный кадр (объект btn уже на сцене).
Код AS1/AS2:
btn.onRelease = btnOnRelease;
--------------
Что касается Linkage - это ссылка на элемент в библиотеке, предназначенный для нужд AS, т.е. для использования в таких методах, как:
Код AS1/AS2:
attachMovie('linkage_name', 'instance_name', 0);
То есть это имя необходимо для того, чтобы скрипт "видел" объект в библиотеке и мог с ним манипулировать. Применяется для добавления на сцену из библиотеки мувиков, битмапы, звуков и т.д.
Галочка для экспорта в некий кадр означает ровным счетом то, что объект попадет в скомпилированный ролик, ведь не вся же библиотека с кучей рабочего и неиспользуемого материала там оказывается, как вы понимаете. Иначе бы ролик весил ого-го. А так при компиляции в SWF-ку происходит экспорт используемых в ролике объектов - тех, что есть на таймлайне уже и тех, которые понадобятся для программного использования.
Это, конечно, грубое представление того, что происходит, но смысл именно в этом.
__________________
Идите первым!


Последний раз редактировалось mooncar; 18.06.2012 в 12:03.
Старый 18.06.2012, 15:24
dkart01 вне форума Посмотреть профиль Отправить личное сообщение для dkart01 Найти все сообщения от dkart01
  № 5  
Ответить с цитированием
dkart01

Регистрация: Apr 2012
Сообщений: 80
Благодарю от всей души! На все вопросы получил ответы.
Прикрепляю исходник вдруг кому потребуется.


В первом кадре вставил
Код AS1/AS2:
function MyFunc() { // название функции MyFunc
		trace ("Hit hit"); // Печатаем Hit Hit
}
В 6 кадре вставил
Код AS1/AS2:
stop(); // Останавливаем на текущем кадре (6)
MyFunc(); // Вызываем мою функцию при наступлении кадра (6)
_root.kvadrat.onRelease=MyFunc; // При нажатии на квадрат вызовится моя функция MyFunc
Вложения
Тип файла: zip Proto3.zip (8.0 Кб, 22 просмотров)

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

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

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


 


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


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