Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Как зделать, чтобы в рисовалке не заламывались линии при быстром перемещении мыши? (http://www.flasher.ru/forum/showthread.php?t=117901)

джонатан 10.11.2008 12:10

Как зделать, чтобы в рисовалке не заламывались линии при быстром перемещении мыши?
 
Добрый день! Вот делаю рисовалку, и всегда у меня линии при быстром движении мыши, заламываются. Попробовал двумя способами, и все впустую.

1)

Код AS1/AS2:

var stoke:Number = 2;
var alpha:Number = 100;
var color:Number = 0xFF0000;
var color2:Number = 0x000000;
var drawing:Boolean = false;
var mLst:Object = new Object();
 
 
Mouse.hide();
crop.startDrag(true, 0, 0, Stage.width, Stage.height);
 
this.lineStyle(stoke, color, alpha);
place.lineStyle(stoke, color2, alpha);
 
mLst.onMouseDown = function() {
                drawing = true;
                _root.moveTo(_xmouse, _ymouse);
}
 
mLst.onMouseUp = function() {
        drawing = false;
}
 
mLst.onMouseMove = function() {
        if(drawing) {
                _root.lineTo(_xmouse, _ymouse);
        }
        updateAfterEvent();               
}
 
Mouse.addListener(mLst);

2)

Код AS1/AS2:

var stoke:Number = 2;
var alpha:Number = 100;
var color:Number = 0xFF0000;
var color2:Number = 0x000000;
var drawing:Boolean = false;
var mLst:Object = new Object();
 
 
Mouse.hide();
crop.startDrag(true, 0, 0, Stage.width, Stage.height);
 
this.lineStyle(stoke, color, alpha);
place.lineStyle(stoke, color2, alpha);
 
mLst.onMouseDown = function() {
                drawing = true;
                _root.moveTo(_xmouse, _ymouse);
                sss = setInterval(Drawing, 1);
}
 
mLst.onMouseUp = function() {
        drawing = false;
        clearInterval(sss);
}
 
function Drawing() {
        if(drawing) {
                _root.lineTo(_xmouse, _ymouse);
        }
}
Mouse.addListener(mLst);

Различие в том, что я заменил onMouseMove а setInterval т.к. у певрого, обновление происходит ~ раз в 50 миллисекунд, а во втором, я заставил обновляться каждую 1 миллисекунду. Но заметных отличий, в итоге не видно.

[IMG]http://img146.**************/img146/8576/lomxm4.jpg[/IMG]

Быть может кто-то делал, нечто подобное? Помогите пожалуйста.
Спасибо.

Division 10.11.2008 13:06

Сам такого не делал, но думаю можно попробовать заюзать curveTo. Или самому реализовать, кривые Безье например.

джонатан 10.11.2008 13:17

curveTo либо некатят, либо я слишком хреново знаю матемшу. Разници вообще не заметил:

Код AS1/AS2:

var n = 1;
var drawing = false;
var xStart
var yStart
 
_root.onMouseDown = function() {
        if (_ymouse<400) {
                _root.lineStyle(th, rgb, al);
                _root.moveTo(_xmouse, _ymouse);
                xStart = _xmouse;
                yStart = _ymouse;
                Dr = true;
                Mouse.hide();
                _root.attachMovie("pen", "pen", 0);
                pen.startDrag(true);
        }
}
 
_root.onMouseUp = function() {
        drawing = false;
        n = 1;
        pen.removeMovieClip();
        Mouse.show();
}
 
_root.onMouseMove = function() {
        if (drawing) {
                if (n == 1) {
                        Xpos = _xmouse;
                        Ypos = _ymouse;
                        n = 2;
                } else {
                        var xSr = (_xmouse+xStart)/2;
                        var ySr = (_ymouse+yStart)/2;
                        var ControlX = 2*Xpos-xSr;
                        var ControlY = 2*Ypos-ySr;
                        _root.curveTo(ControlX, ControlY, _xmouse, _ymouse);
                        n = 1;
                }
        }
        xStart = _xmouse;
        yStart = _ymouse;
}

А что такое кривые Безье?

Division 10.11.2008 13:20

http://ru.wikipedia.org/wiki/Кривая_Безье
Сейчас нету времени посмотреть твой код, быть может под вечер смогу. Хотя обещать не буду.


Часовой пояс GMT +4, время: 13:32.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.