Страница 1 из 1

Отмена последнего действия

Добавлено: 12 июл 2010, 11:09
Евгений
У меня есть код: (который создаёт шейп, и при нажитии рисует им)

Код: Выделить всё

 var container:Sprite = new Sprite(); addChild (container); container.graphics.moveTo (mouseX, mouseY); stage.addEventListener(MouseEvent.MOUSE_DOWN, MouseDown);stage.addEventListener(MouseEvent.MOUSE_UP, MouseUp); function enterFrameHandler (e:Event):void {container.graphics.beginFill(0xff00ff);container.graphics.drawCircle(mouseX-5, mouseY-5, 10);container.graphics.endFill();} function MouseDown(e:MouseEvent):void {addEventListener(Event.ENTER_FRAME, enterFrameHandler);}function MouseUp(e:MouseEvent):void {removeEventListener(Event.ENTER_FRAME, enterFrameHandler);}
Как сделать отмену последнего действия? Этой функции:

Код: Выделить всё

function enterFrameHandler (e:Event):void {container.graphics.beginFill(0xff00ff);container.graphics.drawCircle(mouseX-5, mouseY-5, 10);container.graphics.endFill();}

Re: Отмена последнего действия

Добавлено: 12 июл 2010, 14:41
sersche
надо запоминать просто что было до этого..

Re: Отмена последнего действия

Добавлено: 12 июл 2010, 14:47
Евгений
sersche, я то-то пробовал сделать...вот, что получилось:

Код: Выделить всё

var container:Sprite = new Sprite();var arr:Array = new Array();addChild (container); container.graphics.moveTo (mouseX, mouseY); stage.addEventListener(MouseEvent.MOUSE_DOWN, MouseDown);stage.addEventListener(MouseEvent.MOUSE_UP, MouseUp);btn.addEventListener(MouseEvent.MOUSE_UP, deleteLast);//btn - ваша кнопкаfunction deleteLast(e:MouseEvent):void {this.removeChild(arr.pop());}function enterFrameHandler (e:Event):void {container.graphics.beginFill(0xff00ff);container.graphics.drawCircle(mouseX-5, mouseY-5, 10);container.graphics.endFill();this.arr.push(container);} function MouseDown(e:MouseEvent):void {addEventListener(Event.ENTER_FRAME, enterFrameHandler);}function MouseUp(e:MouseEvent):void {removeEventListener(Event.ENTER_FRAME, enterFrameHandler);}
Но почему-то не работает?! Не подскажите в чем проблема?

Re: Отмена последнего действия

Добавлено: 12 июл 2010, 16:45
Евгений
Помогите кто-нибудь...

Re: Отмена последнего действия

Добавлено: 12 июл 2010, 17:41
bodnar
Это целый кусок куда или выжимки только?
Евгений писал(а):Но почему-то не работает?!
не работать может кучей способов, у Вас какой? Не компилируется, не запускается, ничего не происходит, происходит не то что нужно и т.д.

Re: Отмена последнего действия

Добавлено: 12 июл 2010, 17:58
Евгений
bodnar писал(а):Это целый кусок куда или выжимки только?
Евгений писал(а):Но почему-то не работает?!
не работать может кучей способов, у Вас какой? Не компилируется, не запускается, ничего не происходит, происходит не то что нужно и т.д.
Это целый код...не работает (ничего не происходит)

Re: Отмена последнего действия

Добавлено: 12 июл 2010, 18:14
bodnar
И записан он в кадре?

При нажатии на кнопку должно работать removeChild, т.е. удалить потомка, но чего мы собрались удалять, если не делали никаких addChild, а просто рисовали в том же спрайте?

исправь функцию, вроде как должно заработать

Код: Выделить всё

 function MouseDown(e:MouseEvent):void {container = new Sprite();addChild(container);addEventListener(Event.ENTER_FRAME, enterFrameHandler);} 

Re: Отмена последнего действия

Добавлено: 12 июл 2010, 18:20
Евгений
bodnar да код в кадре...функцию исправил, но всё равно не работает...(

Re: Отмена последнего действия

Добавлено: 12 июл 2010, 18:55
bodnar
на, дальше сам

Код: Выделить всё

var container:Sprite = new Sprite();var arr:Array = new Array();addChild(container); stage.addEventListener(MouseEvent.MOUSE_DOWN, MouseDown);stage.addEventListener(MouseEvent.MOUSE_UP, MouseUp);  function enterFrameHandler (e:Event):void {    container = new Sprite();    container.graphics.beginFill(0xFFCC00);    container.graphics.drawCircle(mouseX, mouseY, 10);    addChild(container);    arr.push(container);} function MouseDown(e:MouseEvent):void  {    if (e.target == btn){ // btn - экземпляр кнопки        this.removeChild(arr.pop());    } else {        addEventListener(Event.ENTER_FRAME, enterFrameHandler);    }} function MouseUp(e:MouseEvent):void  {    removeEventListener(Event.ENTER_FRAME, enterFrameHandler);}