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

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

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

Регистрация: May 2013
Сообщений: 26
Attention Автоматическое перемещение граф. элементов

По первому клику по кнопке (черный квадрад внизу) ручка (деталь выше) должна перемещаться вправо, достугнув определенного значения по Х, должна возвращаться влево в начальное состояние, после чего опять перемещаться вправо и .д., пока не будет нажата снова кнопка (черный квадрад внизу). После повторного надания кнопки ручка должна остановиться. И уже при следующем нажатии на кнопку должна опять перемещаться в автоматическом режиме, описанном выше. Как это реализовать? Мне удалось сделать, чтобы по клику на кнопку, ручка перемещалась в одну сторону, по повторному клику по кнопке - возвращалась в исходную позицию.

Код AS3:
package 
{
	import flash.display.*;
	import flash.events.*;
	import flash.text.*;
	import flash.utils.*;
	import mx.events.ModuleEvent;
 
	import flash.filters.BitmapFilterQuality; 
	import flash.filters.BlurFilter;
 
	/**
	 * ...
	 * @author miato
	 */
	public class Main extends Sprite 
	{
		private var detal1handle:Sprite = new Sprite();
		private var detal4start:Sprite = new Sprite();
		private var timer:Timer;
		private var timer1:Timer;
		private var IsDetal4start:Boolean = false;
 
		public function Main():void 
		{
			detal1handle.graphics.lineStyle(1);              // 
			detal1handle.graphics.beginFill(0xCCCCCC, 1);       
			detal1handle.graphics.drawRect(96, 112, 87, 6);    //   ДЛИНА 
			detal1handle.graphics.beginFill(0x999999, 1);      
			detal1handle.graphics.drawRect(153, 110, 7, 10);
			detal1handle.graphics.beginFill(0x000000, 1);
			detal1handle.graphics.drawRect(160, 100, 30, 30);
			detal1handle.graphics.endFill();
 
			detal4start.graphics.lineStyle(1);                   // кнопка запуска
			detal4start.graphics.beginFill(0x000000, 1);      
			detal4start.graphics.drawRect(85, 225, 15, 30);
			detal4start.graphics.endFill();
//			detal4start.y = 260;
 
			addChild(detal1handle);
			detal1handle.x = 290;
			detal1handle.y = 60;
 
			addChild(detal4start);
			detal4start.x = 525;
			detal4start.y = 170;
 
			detal4start.addEventListener(MouseEvent.CLICK, airStart);
		}
 
		private function airFeeding (e:MouseEvent):void {
 
			IsDetal4start = false;
 
		}
 
		private function airStart (e:MouseEvent):void {
			timer = new Timer(50, 0);
			timer.addEventListener(TimerEvent.TIMER, moveAirStartButton);
			timer.start();
 
			IsDetal4start = true;
			airWork();
		}
 
		private function airStartRevers (e:MouseEvent):void {
			timer = new Timer(50, 0);
			timer.addEventListener(TimerEvent.TIMER, moveAirStartButton);
			timer.start();
 
			IsDetal4start = true;
			airWorkRevers();
		}
 
		private function moveAirStartButton(e:TimerEvent):void 
		{
			if (detal4start.x <= 525) {
				detal4start.x -= 10;
				if (detal4start.x < 510) {
					detal4start.x = 525;
					timer.stop();
				}
				e.updateAfterEvent(); // обновляем экран после выхода из этой функции
			} 
//			else {
//				timer.stop();
//			}
			trace(detal4start.x);
		}
 
		private function airWork ():void {
			if (IsDetal4start) {
				timer1 = new Timer(50, 0);
				timer1.addEventListener(TimerEvent.TIMER, moveAirHandle);
				timer1.start();
			}
		}
 
		private function airWorkRevers ():void {
			if (IsDetal4start) {
				timer1 = new Timer(50, 0);
				timer1.addEventListener(TimerEvent.TIMER, moveAirHandleRevers);
				timer1.start();
			}
		}
 
		private function moveAirHandle (e:TimerEvent):void 
		{
			if (detal1handle.x < 340) {
				detal1handle.x += 10;
				if (detal1handle.x < 340) {
					detal1handle.x = 340;
				} else if (detal1handle.x > 340) {
					detal1handle.x = 340;
					trace(detal1handle.x);
				}
				e.updateAfterEvent(); // обновляем экран после выхода из этой функции
			} 
			else {
				timer1.stop();
			}
 
 
			detal4start.removeEventListener(MouseEvent.CLICK, airStart);
			detal4start.addEventListener(MouseEvent.CLICK, airStartRevers);
 
		}
 
		private function moveAirHandleRevers (e:TimerEvent):void 
		{
			if (detal1handle.x > 290) {
				detal1handle.x -= 10;
				if (detal1handle.x > 290) {
					detal1handle.x = 290;
				} else
				if (detal1handle.x < 290) {
					detal1handle.x = 290;
					trace(detal1handle.x);
				}
				e.updateAfterEvent(); // обновляем экран после выхода из этой функции
			} 
			else {
				timer1.stop();
			}
 
			detal4start.removeEventListener(MouseEvent.CLICK, airStartRevers);
			detal4start.addEventListener(MouseEvent.CLICK, airStart);
		}
 
	}
 
}
Вложения
Тип файла: rar Answ.rar (9.9 Кб, 11 просмотров)

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

Регистрация: Jan 2013
Сообщений: 550
Записей в блоге: 1
Советую скачать TweenLite и забить анимацию в твины

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

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

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


 


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


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