![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2010
Сообщений: 30
|
Добрый день! Делаю "рисовалку", хочу сделать отмену последнего действия...делаю таким способом:
При нажатии мыши, добавляется спрайт, который рисует....при отпускании мыши этот спрайт добавляется в массив...затем отменяю последнее действие так: var allSprites:Array = new Array(); btn_undo.addEventListener(MouseEvent.CLICK,onClickUndo); function onClickUndo(e:Event):void { var sprite:Sprite = allSprites.pop(); sprite.graphics.clear(); removeChild(sprite); sprite = null; } function MoveHandler(e:MouseEvent):void { container = new Sprite(); addChild(container); container.graphics.beginFill(0xff00ff); container.graphics.drawCircle(mouseX, mouseY, 20); container.graphics.endFill(); } Может нужно все вмести эти кружки, сделать в один спрайт? Подскажите...пожалуйста...) Вот исходник: http://www.varyag207.ru/undo_graphiscs.rar Последний раз редактировалось iNils; 06.07.2011 в 14:09. |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 30
|
iNils, да так можно...он удаляет последнее действие, но потом начинает удалять все спрайты, которые есть...
Кружки все держу в одном спрайте...но отмена последнего действия происходит только у одного кружка..если не сложно гляньте мой исходник - выше) |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 30
|
iNils, понятно..вот тогда весь код:
var container:Sprite; pic.addEventListener(MouseEvent.MOUSE_DOWN, MouseDown); stage.addEventListener(MouseEvent.MOUSE_UP, MouseUp); function MouseDown(e:MouseEvent):void { addEventListener(MouseEvent.MOUSE_MOVE, enterFrameHandler); } function MouseUp(e:MouseEvent):void { allSprites.push(container); removeEventListener(MouseEvent.MOUSE_MOVE, enterFrameHandler); } function enterFrameHandler(e:MouseEvent):void { container = new Sprite(); addChild(container); container.graphics.beginFill(0xff00ff); container.graphics.drawCircle(mouseX, mouseY, 20); container.graphics.endFill(); } var allSprites:Array = new Array(); btn_undo.addEventListener(MouseEvent.CLICK,onClickUndo); function onClickUndo(e:Event):void { var sprite:Sprite = allSprites.pop(); sprite.graphics.clear(); removeChild(sprite); sprite = null; } |
|
|||||
|
У вас по MOUSE_MOVE в переменную container записываются спрайты, каждый раз новый. Но в массив allSprites, объект по этой ссылке, будет добавлен только по MOUSE_UP. К тому моменту там будет последний созданный спрайт.
P.S. Вот это: в вашем случае, делать бессмысленно.
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
|
Регистрация: Jun 2010
Сообщений: 30
|
alatar, получилось)) Спасибо, всё работает)
Последний раз редактировалось geka96; 06.07.2011 в 17:41. |
![]() |
![]() |
Часовой пояс GMT +4, время: 19:51. |
|
|
« Предыдущая тема | Следующая тема » |
|
|