![]() |
|
||||||||||
|
|
|
|||||
var color = 0x9999FF; this.onMouseDown = function() { penUp = false; this.moveTo(_xmouse, _ymouse); this.lineStyle(5, color); }; this.onMouseMove = function() { if (!penUp) { this.lineTo(_xmouse, _ymouse); updateAfterEvent(); } }; this.onMouseUp = function() { penUp = true; }; Как сделать возврат к предыдущей нарисованной линии? Т.е. по типу стрелочки вперед / назад. |
|
|||||
|
Регистрация: Mar 2008
Сообщений: 34
|
А ты записывай нарисованные координаты линии в массив. А далее напишу функцию перерисовки по массиву. Тоесть если назад переместишь то рисовать будешь по массиву (цикл i=0;i<array.length-2;i++).
|
|
|||||
|
Интересное предложение, думаю, реализовать мне его будет всё же несколько сложно. Если у Вас будет свободное время и хорошее настроение, помогите разобрать этот вопрос)
|
|
|||||
|
Регистрация: Jan 2008
Сообщений: 669
|
А мне не кажется этот вариант сложным, но кажется не рациональным, каждый раз перерисовывать все... На мой взгляд лучше помещать каждую нарисованную линию в отдельный клип, а при нужде удалять его. При большом кол-ве линий думаю это будет быстрей работать...
|
|
|||||
|
Попытался сделать, как посоветовал Kuruki, но всё равно клипы не хотят удаляться, что бы ни делал.
count = 0; var mc = this.createEmptyMovieClip("line", 1); var color = 0x9999FF; mc.onMouseDown = function() { penUp = false; mc.moveTo(_xmouse, _ymouse); mc.lineStyle(5, color); count=count+1; mc.createEmptyMovieClip("inLine"+count,this.getNextHighestDepth()); }; mc.onMouseMove = function() { if (!penUp) { mc.lineTo(_xmouse, _ymouse); updateAfterEvent(); } }; mc.onMouseUp = function() { penUp = true; }; |
|
|||||
|
Регистрация: Jan 2008
Сообщений: 669
|
Я бы посоветовал использовать onPress, onRelease чтобы не было проблем с обработкой других кнопок (при нажатии на них происходило бы рисование). Для этого придется нарисовать "планшет", т.е. лист, на чем мы будем рисовать. В вашем случае проблема была в том, что вы создавали клипы для линий, а рисовали всеравно в главном (mc).
var lineCount:Number = 0; var lineColor:Number = 0x9999FF; var planshetColor:Number = 0xFFFF00; var penUp:Boolean = false; var planshet_mc:MovieClip = drawPlanshet(container); function drawPlanshet(target_mc:MovieClip):MovieClip{ var mc:MovieClip = target_mc.createEmptyMovieClip('mc', target_mc.getNextHighestDepth()); mc.useHandCursor = false; mc.beginFill(planshetColor); mc.lineTo(Stage.width, 0); mc.lineTo(Stage.width, Stage.height); mc.lineTo(0, Stage.height); mc.lineTo(0,0); mc.endFill(); return mc; } planshet_mc.onPress = function() { penUp = false; lineCount++; this.createEmptyMovieClip("inLine" + lineCount, this.getNextHighestDepth()); this['inLine' + lineCount].moveTo(_xmouse, _ymouse); this['inLine' + lineCount].lineStyle(5, lineColor); }; planshet_mc.onMouseMove = function() { if (!penUp) { this['inLine' + lineCount].lineTo(_xmouse, _ymouse); updateAfterEvent(); } }; planshet_mc.onRelease = function() { penUp = true; }; function undo(){ planshet_mc['inLine' + lineCount].removeMovieClip(); lineCount--; } undo_btn.onRelease = undo; |
|
|||||
|
Большущее Спасибо!
![]() |
|
|||||
|
Появился ещё один вопрос.
Для выбора фона пользуюсь компонентом ColorPicker 2. В начале работы фоном у меня служил динамик.текст и задавал его таким образом Разумеется сейчас так не получается, пытался вот так сделать Фон всё равно не меняется. |
|
|||||
|
Регистрация: Jan 2008
Сообщений: 669
|
Цитата:
Делать все за вас не буду, лучше дам совет. Функцию рисования фона надо немного изменить; чтобы с каждой перерисовкой не накладывать фоны друг на друга, будем заменять его.Для этого будем каждый раз создавать клип с тем же именем и в той же глубине. function drawPlanshet(target_mc:MovieClip):MovieClip{
var mc:MovieClip = target_mc.createEmptyMovieClip('mc', 1);
mc.useHandCursor = false;
mc.beginFill(planshetColor);
mc.lineTo(Stage.width, 0);
mc.lineTo(Stage.width, Stage.height);
mc.lineTo(0, Stage.height);
mc.lineTo(0,0);
mc.endFill();
return mc;
}
function drawPlanshet(target_mc:MovieClip):MovieClip{
var mc:MovieClip = target_mc.createEmptyMovieClip('mc', 1);
mc.useHandCursor = false;
mc.beginFill(cpicker.color);
mc.lineTo(Stage.width, 0);
mc.lineTo(Stage.width, Stage.height);
mc.lineTo(0, Stage.height);
mc.lineTo(0,0);
mc.endFill();
return mc;
}
|
|
|||||
|
Цитата:
![]() Спасибо ещё раз за помощь! _____________ ОЙ_сейчас проверил, видимо фон всё же накладывается поверх линий, тогда над этим мне надо будет ещё по размышлять ![]() Добавлено через 22 часа 19 минут Что-то ни как не получается решить проблему с изменением фона. После выбора цвета нарисованные линии исчезают и стопорится рисование. Может быть, при вызове функции drawPlanshet я убиваю инстанту мувика в котором происходит рисование? Последний раз редактировалось KiL33; 07.12.2008 в 20:49. |
![]() |
![]() |
Часовой пояс GMT +4, время: 12:41. |
|
|
« Предыдущая тема | Следующая тема » |
|
|