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

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

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

Регистрация: Sep 2012
Сообщений: 57
Question Действие происходит лишь один раз.

При нажатии на кнопку объект становится видимым, а его анимация запускается, при повторном нажатии на ту же кнопку должно проходить обратное действие. Всё работает только 1 раз, а надо чтобы работало бесконечное количество нажатий.
Код AS3:
qw_cont.podsv.addEventListener(MouseEvent.CLICK, oMClick9);
function oMClick2(e:MouseEvent):void
{
		qw_cont.kryshka.play();
}
function oMClick9(e:MouseEvent):void
{
		qw_cont.plamia.play();
		qw_cont.plamia.visible = true;
		qw_cont.podsv.addEventListener(MouseEvent.CLICK, oMClick10);
		function oMClick10(e:MouseEvent):void
{
	qw_cont.plamia.stop();
	qw_cont.plamia.visible = false;
	qw_cont.podsv.removeEventListener(MouseEvent.CLICK, oMClick10);
}
qw_cont.podsv.removeEventListener(MouseEvent.CLICK, oMClick9);
}

Старый 11.02.2013, 22:26
Dip52 вне форума Посмотреть профиль Отправить личное сообщение для Dip52 Найти все сообщения от Dip52
  № 2  
Ответить с цитированием
Dip52

Регистрация: Aug 2012
Сообщений: 297
Всё просто. Создай событие (нажатие кнопки мыши) и в нём условие: если объект видимый (и включай анимацию), то делай его невидимым (и отключай анимацию).

Код AS3:
//Определяю пакет:
package src
{
	import flash.display.MovieClip;
	import flash.events.MouseEvent;
 
	//Определяю класс, который расширяет класс MovieClip:
	public class ChangeVisible extends MovieClip
	{
		//Определяю переменную экземпляра с ссылкой на объект MovieClip:
		var objectMovieClip:MovieClip = myObject;
		//Определяю конструктор класса:
		public function ChangeVisible()
		{
			//Определяю событие MouseEvent: нажатие кнпоки мыши.
			myObject.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
		}
		//Определяю метод экземпляра.
		private function mouseDown(event:MouseEvent):void
		{
			//Определяю локальную переменную для выбранного объекта.
			var lv:MovieClip = event.target;
 
			//Если выбранный объект видимый, то:
			if(lv.visible)
			{
				//Выключаю анимацию выбранного объекта:
				lv.stop();
				//Делаю его невидимым:
				lv.visible = false;
			}
			//Если выбранный объект невидимый, то:
			else
			{
				//Делаю его видимым:
				lv.visible = true;
				//Включаю анимацию выбранного объекта:
				lv.play();
			}
		}
	}
}

Старый 11.02.2013, 22:26
Asfel вне форума Посмотреть профиль Отправить личное сообщение для Asfel Найти все сообщения от Asfel
  № 3  
Ответить с цитированием
Asfel

Регистрация: Feb 2013
Адрес: Киев
Сообщений: 76
Отправить сообщение для Asfel с помощью Skype™
Код:
qw_cont.plamia.play();
заменить на
Код:
qw_cont.plamia.gotoAndPlay(0);

Старый 11.02.2013, 22:36
Dip52 вне форума Посмотреть профиль Отправить личное сообщение для Dip52 Найти все сообщения от Dip52
  № 4  
Ответить с цитированием
Dip52

Регистрация: Aug 2012
Сообщений: 297
Цитата:
Сообщение от Asfel Посмотреть сообщение
Код:
qw_cont.plamia.play();
заменить на
Код:
qw_cont.plamia.gotoAndPlay(0);
чтобы работало бесконечное количество нажатий.

Старый 11.02.2013, 22:45
Asfel вне форума Посмотреть профиль Отправить личное сообщение для Asfel Найти все сообщения от Asfel
  № 5  
Ответить с цитированием
Asfel

Регистрация: Feb 2013
Адрес: Киев
Сообщений: 76
Отправить сообщение для Asfel с помощью Skype™
Ну ладно добавить в
Код:
oMClick10
Код:
qw_cont.podsv.addEventListener(MouseEvent.CLICK, oMClick9);

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Тут надо избавиться от вложенной функции. Вложенные функции - зло.

Фактически, весь этот огород можно заменить вот на это:
Код AS3:
qw_cont.podsv.addEventListener(MouseEvent.CLICK, onClick);
function onClick(e:MouseEvent):void
{
  qw_cont.plamia.visible = !qw_cont.plamia.visible; // меняем видимость при каждом щелчке
	if (qw_cont.plamia.visible) {
		qw_cont.plamia.gotoAndPlay(0);
	} else {
		qw_cont.plamia.gotoAndStop(0);
	}	
 
}
Dip52, я уже не первый раз вижу ваши посты, с каким-то чудовищным количеством комментариев. Чисто из любопытства, зачем так много? Тем более что закомментированы очевиднейшие вещи.
Например это:
Код AS3:
//Делаю его невидимым:
lv.visible = false;
или это:
Код AS3:
//Определяю событие MouseEvent: нажатие кнпоки мыши.
myObject.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
Понятно и без комментариев. Не нужно писать комментарии, если код сам говорит за себя. Это излишество. Они только мешают восприятию кода.

Старый 11.02.2013, 22:58
Asfel вне форума Посмотреть профиль Отправить личное сообщение для Asfel Найти все сообщения от Asfel
  № 7  
Ответить с цитированием
Asfel

Регистрация: Feb 2013
Адрес: Киев
Сообщений: 76
Отправить сообщение для Asfel с помощью Skype™
Надо но их там по видимому уже столько ("oMClick10") что избавляться от них в данном случае нет смысла. Нужно просто закончить то что там делается)

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
что избавляться от них в данном случае нет смысла.
Не, все равно надо избавиться ) Да и вообще там эти функции лишние. Можно легко обойтись и одной.

Старый 11.02.2013, 23:04
Dip52 вне форума Посмотреть профиль Отправить личное сообщение для Dip52 Найти все сообщения от Dip52
  № 9  
Ответить с цитированием
Dip52

Регистрация: Aug 2012
Сообщений: 297
Цитата:
Dip52, я уже не первый раз вижу ваши посты, с каким-то чудовищным количеством комментариев. Чисто из любопытства, зачем так много? Тем более что закомментированы очевиднейшие вещи.
Например это:
Код AS3:
//Делаю его невидимым:
lv.visible = false;
или это:
Код AS3:
//Определяю событие MouseEvent: нажатие кнпоки мыши.
myObject.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
Понятно и без комментариев. Не нужно писать комментарии, если код сам говорит за себя. Это излишество. Они только мешают восприятию кода.
Вдруг моё понимание этого языка программирования от этого увеличится.

Старый 11.02.2013, 23:11
Asfel вне форума Посмотреть профиль Отправить личное сообщение для Asfel Найти все сообщения от Asfel
  № 10  
Ответить с цитированием
Asfel

Регистрация: Feb 2013
Адрес: Киев
Сообщений: 76
Отправить сообщение для Asfel с помощью Skype™
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Не, все равно надо избавиться ) Да и вообще там эти функции лишние. Можно легко обойтись и одной.
Мы бы вообще все по другому делали, но этому человеку не нужно всего этого знать. Нужно решить локальную задачу. Тем более исходя из кода там вообще чему либо более сложному учится не нужно либо рано. А решить проблему все же нужно. Возможно этот человек закончит с этой задачей и больше не увидит экшен скрипт. Так есть ли смысл тогда усложнять

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

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

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


 


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


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