Форум 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=78869)

rockafella 26.04.2006 18:27

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

E.Q. 26.04.2006 19:35

Вставляешь в первый кадр и наслаждаешься.
Код:

_root.createEmptyMovieClip("rclip", 1);
rclip.lineStyle(2, 0x005533, 100);
_root.onMouseDown = function() {
        rclip.moveTo(_root._xmouse, _root._ymouse);
        onn = true;
};
_root.onMouseUp = function() {
        onn = false;
};
rclip.onEnterFrame = function() {
        if (onn == true) {
                rclip.lineTo(_root._xmouse, _root._ymouse);
        }
};


KUZEN 26.04.2006 19:51

В первый кадр код

Код:

this.createEmptyMovieClip("line_mc", 1);
line_mc.lineStyle(1, 0x006699, 100);
onMouseDown = function () {
        detect = 1;
        startX = _xmouse;
        startY = _ymouse;
        line_mc.moveTo(startX, startY);
};
onMouseMove = function () {
        if (detect == 1) {
                line_mc.lineTo(_xmouse, _ymouse);
                updateAfterEvent();
        }
};
onMouseUp = function () {
        detect = 0;
};


etc 26.04.2006 19:58

E.Q. зачем нагружать машину ненужным onEnterFrame?

rockafella 26.04.2006 20:13

Не все так просто, линия должна из начальной точки идти прямая.
То есть начальная точка зафиксирована, из этой точки мы тяним линию мышью. Куда бы мы ее не тянули, она должна оставатся ПРЯМАЯ!
Линия должна зафиксироватся в конечной точке только при отпускании кнопки мыши.
Вот такая вот задача

И еще, если мы при неотнущенной енопки мыши вернем линиию в исходное положение, то она должна исчезнуть

KUZEN 26.04.2006 20:24

Всё так же просто

Код:

count=0;
onMouseDown = function () {
        count++;
        detect = 1;
        startX = _xmouse;
        startY = _ymouse;
};
onMouseMove = function () {
        if (detect == 1) {
                this.createEmptyMovieClip("l"+count, count);
                var l = this["l"+count];
                l.lineStyle(1, 0x006699, 100);
                l.moveTo(startX, startY);
                l.lineTo(_xmouse, _ymouse);
                updateAfterEvent();
        }
};
onMouseUp = function () {
        detect = 0;
};


etc 26.04.2006 20:28

KUZEN, а если я прокликаю раз этак 300... а?

KUZEN 26.04.2006 20:36

Цитата:

Сообщение от ETC
KUZEN, а если я прокликаю раз этак 300... а?

Это на скорую руку для примера ))) Можно после каждого раза отрисовывать в битмап ))) Предложи свою версию, на одном из твоих сайтов очень приличная гостевуха, выкладывай исходники с коментами )))

etc 26.04.2006 20:46

У меня нет удаления линий (хотя это можно сделать довольно просто и быстро).
Нужно сохранять всю историю рисования в массив (с сохранием параметров линии). И, если нужно убить линию, удаляем последний элемент массива и перерисовываем. Всё просто.
Конкретными вещами (кодом) помочь сейчас не могу.

KUZEN 26.04.2006 20:48

Цитата:

Сообщение от ETC
У меня нет удаления линий (хотя это можно сделать довольно просто и быстро).
Нужно сохранять всю историю рисования в массив (с сохранием параметров линии). И, если нужно убить линию, удаляем последний элемент массива и перерисовываем. Всё просто.
Конкретными вещами (кодом) помочь сейчас не могу.

Да мне то всё это понятно ...


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

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