![]() |
|
||||||||||
|
|||||
|
Регистрация: Dec 2012
Сообщений: 28
|
В небольшой задаче требуется модифицировать кнопки для создания линий с кистью формы круга и прямоугольника. По нажатию той или иной происходит смена кистей рисования в рабочей области. Но получается интересно: рисование происходит сразу по нажатию, "из кнопки". Относительно кода, ошибок нет, если не брать логических. Как можно решить эту проблему?
|
|
|||||
|
[+1 16.03.13]
[+1 22.03.13] Регистрация: Dec 2012
Сообщений: 100
|
в первую очередь нужно весь код вынести в отдельный as файл, а не только фигуры прямоугольника и эллипса, а то ведь не у всех есть CS5.5, у кого-то, например (как у меня) установлен CS4
|
|
|||||
|
блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
|
yasha005, если у вас не открывается, то скажите про это. Но не советуйте "в первую очередь нужно весь код вынести в отдельный as файл", так как это не помощь в решении задачи.
Ksenya23, очевидно ошибка с событиями и логикой. Объясните подробнее, что вы пытаетесь сделать. P.S. Для "рисовалки" как-то странно использовать кучу мувиклипов: Ведь можно просто в MovieClip.graphics рисовать фигуры. Посмотрел внимательнее. Думаю, что вам стоит завести переменную, которая будет хранить значение того, какую кисть использовать. Кликнули на одну кнопку — переменная приняла значение "rect" (например), кликнули на другую — значение "ellipse". Соответственно, когда зажимаем мышь на области рисования, то смотрим, какой значение у этой переменной, и, соответственно, знаем, какую фигуру рисовать. Относительно событий — вы замешали в одну "кучу" и клики на кнопках и рисование. По-идее, клик по кнопке — выбор кисти. Клик на области рисования (точнее зажатие мыши) — вот тогда и слушаем MOUSE_MOVE и рисуем.
__________________
hauts.ru |
|
|||||
|
Регистрация: Dec 2012
Сообщений: 28
|
Hauts, сейчас попробую обдумать, спасибо.
yasha005, код с основного файла кинула в блокнот. Учту в дальнейшем ![]() |
|
|||||
|
Регистрация: Dec 2012
Сообщений: 28
|
Изменила код, ругается на кнопки:
var color:Number; var shapeType:String = "ellipse"; //stage.addEventListener(MouseEvent.MOUSE_DOWN, startDrawing); //stage.addEventListener(MouseEvent.MOUSE_UP, stopDrawing); stage.addEventListener(MouseEvent.MOUSE_DOWN, startDrawing); stage.addEventListener(MouseEvent.MOUSE_UP, stopDrawing); stage.addEventListener(MouseEvent.CLICK, keyDownHandler ); function startDrawing(e:MouseEvent):void { stage.addEventListener(MouseEvent.MOUSE_MOVE, makeShapes); color = Math.random() * 0xFFFFFF; } function stopDrawing(e:MouseEvent):void { stage.removeEventListener(MouseEvent.MOUSE_MOVE, makeShapes) } /*function startDrawing(e:MouseEvent):void { stage.addEventListener(MouseEvent.MOUSE_MOVE, makeShapesEllipse); stage.addEventListener(MouseEvent.MOUSE_MOVE, makeShapesRect); color = Math.random() * 0xFFFFFF;} function stopDrawing(e:MouseEvent):void { stage.removeEventListener(MouseEvent.MOUSE_MOVE, makeShapesEllipse); stage.removeEventListener(MouseEvent.MOUSE_MOVE, makeShapesRect);}*/ function keyDownHandler(e:MouseEvent):void { if (ellipse_btn.onPress) { shapeType = "ellipse"; } else if (rect_btn.onPress) { shapeType = "rectangle"; } } /*function makeShapesEllipse(e:MouseEvent):void{ var ellipse:Ellipse = new Ellipse(10, 10, color); addChild(ellipse); ellipse.x = mouseX; ellipse.y = mouseY; }*/ //ellipse_btn.addEventListener(MouseEvent.MOUSE_DOWN, startDrawing); //rect_btn.addEventListener(MouseEvent.MOUSE_DOWN, startDrawing); /*function makeShapesRect(e:MouseEvent):void { var rect:Rect = new Rect(10, 10, color); addChild(rect); rect.x = mouseX; rect.y = mouseY;}*/ function makeShapes(e:MouseEvent):void { if(shapeType == "ellipse") { var ellipse:Ellipse = new Ellipse(10, 10, color); addChild(ellipse); ellipse.x = mouseX; ellipse.y = mouseY; }else if (shapeType == "rectangle") { var rectangle:Rect = new Rect(5, 15, color); addChild(rectangle); rectangle.x = mouseX; rectangle.y = mouseY; } } |
|
|||||
|
Регистрация: Dec 2012
Сообщений: 28
|
Спасибо, учту..Вот например в моем случае:
Scene 1, слой "actions", кадр 1, строка 27 1119: Обращение возможного неопределенного свойства onPress через ссылку со статическим типом flash.display:SimpleButton . Scene 1, слой "actions", кадр 1, строка 29 1119: Обращение возможного неопределенного свойства onPress через ссылку со статическим типом flash.display:SimpleButton . ___ Не нахожу на сайте конструкции с использованием условия if-else для двух кнопок в одной функции, а хотелось бы. Нашла только: button.onPress = function():Void { trace("Кнопка нажата"); }..Придется разбить функцию с ошибками на 2..наверное, или есть этому более разумное решение? |
|
|||||
import flash.events.MouseEvent; addEventListener(MouseEvent.MOUSE_DOWN, clickManager ); addEventListener(MouseEvent.MOUSE_UP, clickManager ); var shapeType:String = 'ellipse'; work_place.mouseChildren = false; // контейнер для рисования function clickManager(e:MouseEvent):void { switch (e.target.name) { case 'ellipse_btn': shapeType = 'ellipse'; break; case 'rect_btn': shapeType = 'rectangle'; break; case 'work_place': (e.type=='mouseDown') ? addEventListener(MouseEvent.MOUSE_MOVE, makeShapes) : removeEventListener(MouseEvent.MOUSE_MOVE, makeShapes); break; default: trace('unregister target object'); } } function makeShapes(e:MouseEvent):void { var color:uint = Math.random() * 0xFFFFFF; var shape:*; switch (shapeType) { case "ellipse": { shape = new Ellipse(10, 10, color); } break; case "rectangle": { shape = new Rect(5, 15, color); } break; default: return void; } work_place.addChild(shape); shape.x = mouseX; shape.y = mouseY; shape.cacheAsBitmap = true; } Набросал очень быстро потому возможно нужно заменить на
__________________
return this... Последний раз редактировалось AlexCooper; 21.02.2013 в 14:57. |
|
|||||
|
Регистрация: Dec 2012
Сообщений: 28
|
AlexCooper, не получилось..
Scene 1, слой "actions", кадр 1, строка 26 1120: Обращение несуществующего свойства work_place. затем, при замене work_place на stage: мигает и не выдает ошибок никаких, где-то произошел конфликт Ругается на work_place именно) тоже самое ![]() замена на stage избегает ошибок, но не конфликта( |
|
|||||
import flash.events.MouseEvent; addEventListener(MouseEvent.MOUSE_DOWN, clickManager ); addEventListener(MouseEvent.MOUSE_UP, clickManager ); var shapeType:String = 'ellipse'; var color:uint; function clickManager(e:MouseEvent):void { switch (e.target.name) { case 'ellipse_btn': shapeType = 'ellipse'; break; case 'rect_btn': shapeType = 'rectangle'; break; default: { color:uint = Math.random() * 0xFFFFFF; if (e.type=='mouseDown') addEventListener(MouseEvent.MOUSE_MOVE, makeShapes) else removeEventListener(MouseEvent.MOUSE_MOVE, makeShapes); } break; } } function makeShapes(e:MouseEvent):void { var shape:*; switch (shapeType) { case "ellipse": { shape = new Ellipse(10, 10, color); } break; case "rectangle": { shape = new Rect(5, 15, color); } break; default: return void; } addChild(shape); shape.x = mouseX; shape.y = mouseY; shape.cacheAsBitmap = true; }
__________________
return this... |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:08. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|