|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Aug 2012
Сообщений: 77
|
Цитата:
Цитата:
|
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Aug 2012
Сообщений: 77
|
Цитата:
package { import flash.display.GraphicsPath; import flash.display.IGraphicsData; import flash.display.Shape; import flash.events.Event; import flash.events.MouseEvent; public class PaintBall extends MovieClip { var path:GraphicsPath = new GraphicsPath(new Vector.<int>(), new Vector.<Number>()); var drawing:Vector.<IGraphicsData> = new Vector.<IGraphicsData>(); var child:Shape = new Shape (); public function PaintBall() { doDrawRect(); stage.addEventListener(MouseEvent.MOUSE_DOWN, onMD); stage.addEventListener(MouseEvent.MOUSE_UP, onMU); } public function onMD (e:MouseEvent):void{ graphics.clear(); graphics.lineStyle(2, 0x000000, 100, true, "normal", "none"); drawing.push(path); var to_x = e.localX; var to_y = e.localY; path.moveTo(to_x,to_y); stage.addEventListener(Event.ENTER_FRAME, enterFrameHandler); } public function enterFrameHandler(event:Event):void { var m_x:Number = stage.mouseX; var m_y:Number = stage.mouseY; if((m_x>5 && m_x<200) && (m_y>5 && m_y<200)){ path.lineTo(m_x, m_y); path.commands.push(1); path.data.push(m_x, m_y); graphics.drawGraphicsData(drawing); } } public function onMU(event:MouseEvent):void { stage.removeEventListener("enterFrame", enterFrameHandler); drawing.splice(0,1); path.commands.splice(0,path.commands.length); path.data.splice(0,path.data.length); } public function doDrawRect():void { child.graphics.lineStyle(1, 0x000000); child.graphics.drawRect(0, 0, 200, 200); child.graphics.endFill(); addChild(child); } } } |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Ну да, я и забираю парой. Сделал счетчик, по ентерфрейму его увеличиваю и забираю координаты и команду.
//// счетчик-итератор для воспроизведения private var _stepCount:uint; ////... слушатель нажатия на кнопку воспроизведения private function clickHandler(event:MouseEvent):void { //// удаляем холст с рисунком юзера super.removeChild(_canvas); //// создаем холст для воспроизведения _historyCanvas = new Shape(); super.addChild(_historyCanvas); _historyCanvas.graphics.lineStyle(2, 0xFFEEEE); //// первая отрисовка сохраненного пути целиком за один раз (бледненько))) _historyCanvas.graphics.drawPath(_path.commands, _path.data); //// установки линии для воспроизведения _historyCanvas.graphics.lineStyle(2, 0x226600); //// начальное значение счетчика _stepCount = 0; //// подписка на ентерфрейм для "покадрового" воспроизведения super.addEventListener(Event.ENTER_FRAME, restoreHandler); } private function restoreHandler(event:Event):void { //// получаем из Пути команды и координаты var command:uint = _path.commands[_stepCount]; var nextX:Number = _path.data[_stepCount * 2]; var nextY:Number = _path.data[_stepCount * 2 + 1]; if (command == 1) { _historyCanvas.graphics.moveTo(nextX, nextY); } else { _historyCanvas.graphics.lineTo(nextX, nextY); } //// увеличиваем счетчик _stepCount += 1; //// если вектор команд "кончился", перестаем слушать ентерфрейм if (_stepCount == _path.commands.length) { super.removeEventListener(Event.ENTER_FRAME, restoreHandler); } }
__________________
Reality.getBounds(this); |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
__________________
Reality.getBounds(this); |
Часовой пояс GMT +4, время: 05:12. |
|
« Предыдущая тема | Следующая тема » |
|
|