Показать сообщение отдельно
Старый 13.11.2011, 23:39
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 74  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
Сообщение от Vektor Посмотреть сообщение
Правильно говоришь, вот пришлось дописать.
Код AS3:
private var _iCounter:int=0;
//Когда нада удалить кнопки.
onButtonDelete(_mcButton);
onButtonDelete(_mcButton1);
private function onButtonDelete(But:MovieClip):void {
...
_iCounter++;
...
Какой-то ужос на ровном месте, ИМХО вместо
Код AS3:
onButtonCreate(_mcButton,100,100);
onButtonCreate(_mcButton1, 100,200);
создали бы класс-обвертку для одной-единственной кнопки, а потом
Код AS3:
var button:DisplayObject;
button = new MyButton(_mcButton);
button.x = 100;
button.y = 100;
addChild(button);
button = new MyButton(_mcButton1);
button.x = 100;
button.y = 200;
addChild(button);
А то тут куча разделяемых переменных на 2 кнопки, уже счетчики пошли...

Ну и сам этот несчастный класс:
Код AS3:
package {
	import flash.display.Sprite;
	import flash.display.MovieClip;
	import flash.events.MouseEvent;
	public class MyButton extends Sprite
	{
		private var button:MovieClip;
		public function MyButton(button:MovieClip) {
			this.button = button;
			this.button.gotoAndStop(1);
			addEventListener(MouseEvent.ROLL_OVER, onRollOver);
			addEventListener(MouseEvent.ROLL_OUT, onRollOut);
			addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
		}
		private var _isOver:Boolean = false;
		private var _isDown:Boolean = false;
		private function onRollOver(event:MouseEvent):void {
			_isOver = true;
			updateFrame();
		}
		private function onRollOut(event:MouseEvent):void {
			_isOver = false;
			updateFrame();
		}
		private function onMouseDown(event:MouseEvent):void {
			_isDown = true;
			updateFrame();
			// Стейдж здесь уже будет, иначе как на кнопку смогли нажать?
			stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
		}
		private function onMouseUp(event:MouseEvent):void {
			// Сработает, даже если отжали за пределами флешки, т.е. отпишемся стопроцентно
			stage.removeEventListener(MouseEvent.MOUSE_UP, onMouseUp);
			_isDown = false;
			updateFrame();
		}
		private function updateFrame():void
		{
			if (_isDown) {
				if (_isOver) {
					this.button.gotoAndStop(4);
				} else {
					this.button.gotoAndStop(3);
				}
			} else {
				if (_isOver) {
					this.button.gotoAndStop(2);
				} else {
					this.button.gotoAndStop(1);
				}
			}
		}
	}
}


Последний раз редактировалось expl; 13.11.2011 в 23:57.