Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   Простенький графический редактор на флеше. (http://www.flasher.ru/forum/showthread.php?t=85304)

Fbor 25.09.2006 12:50

Попробовал я дополнить пример тем, что мне надо. Вот что получилось.
Жирным выделена суть - момент рисования так сказать.
Попробуйте запустите.. видно что ни о каком рисовании речи не идет.. точки успевают рисоваться одна через 10.
Видать надо идти другим путем... каким?

Код:

import flash.display.BitmapData;
import flash.geom.Point;

var myBitmapData:BitmapData = new BitmapData(100, 80, false, 0x00CCCCCC);

var mc_1:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth());
mc_1.attachBitmap(myBitmapData, this.getNextHighestDepth());

var mc_2:MovieClip = createRectangle(1, 1, 0xFF0000);

var destPoint:Point = new Point(myBitmapData.rectangle.x, myBitmapData.rectangle.y);
var currPoint:Point = new Point();

mc_1.onEnterFrame = function() {
    currPoint.x = mc_2._x;
    currPoint.y = mc_2._y;
    if(myBitmapData.hitTest(destPoint, 255, currPoint)) {
                myBitmapData.setPixel(currPoint.x, currPoint.y, 0x00222222);
    }
}

mc_2.startDrag(true);

function createRectangle(width:Number, height:Number, color:Number):MovieClip {
    var depth:Number = this.getNextHighestDepth();
    var mc:MovieClip = this.createEmptyMovieClip("mc_" + depth, depth);
    mc.beginFill(color);
    mc.lineTo(0, height);
    mc.lineTo(width, height);
    mc.lineTo(width, 0);
    mc.lineTo(0, 0);
    return mc;
}


Fbor 25.09.2006 12:52

Dendroid
А.. эээ.. а как с помощью lineTo можно к примеру овал нарисовать?
Можете дать ссылочку на пример. Просто насколько я понимаю.. таким образом я смогу рисовать только прямые линии... или нет?

AlexSol 25.09.2006 13:49

для переноса на битмап лучше использовать совет от Dendroid (пост 20)

пример рисования фигур вы можете найти у себя (flash8)
C:\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\DrawingAPI

Fbor 25.09.2006 14:06

Кстати, вот примерно то, что мне надо
http://www.webmastera.org/painter.php/
только мне надо попроще :)

Пошел смотреть пример "у себя" :)

Fbor 25.09.2006 14:21

Глянул пример из C:\Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript\DrawingAPI
Там же лишь фигуры... а кривые это немного иное... или они аналогично создаются?

Fbor 25.09.2006 14:23

По идее, наверное действительно... можно на маусдаун начинать по ентерфрейм рисовать линии от начальной до текущей точки... если они отличаются... в итоге если быстро мышкой не елозить то будет плавная линия, а если быстро, то и в видимых мною до этого редакторах она становится ломаной.
Это нормальный подход?

AlexSol 25.09.2006 14:44

вы спрашивали про овал, и ответ про него получили. кривые рисуются спомощью MovieClip.curveTo().

AlexSol 25.09.2006 14:52

я уже не помню, в чем была проблема но вот самый простой код наверно

Код:

var down:Boolean = false;
_root.onMouseDown = function() {
        down = true;
        _root.lineStyle(3, Number(Math.round(Math.random()*16777215)));
        _root.moveTo(_xmouse, _ymouse);
};
_root.onMouseMove = function() {
        if (down) {
                _root.lineTo(_xmouse, _ymouse);
        }
};
_root.onMouseUp = function() {
        down = false;
};

и и на onMouseUp делать draw() в битмапдата

Fbor 25.09.2006 15:18

Во блин! Оно. Вот это мне и надо :) По сути.. здесь так и есть... как я предположил.. на маусдаун начинаем циклично (правда здесь не на ентерфрейм, а на маусмув, что логичнее) рисовать прямые до текущей точки :)
Все намного проще, чем я думал :)
Спасибо всем :)

AlexSol 25.09.2006 15:28

забавно выходит если заменить
_root.lineStyle(3, Number(Math.round(Math.random()*16777215)));

на

_root.lineStyle(Math.random()*5, Number(Math.round(Math.random()*16777215)));
--------------
пиши на мыло если нужно еще что-то из параметров подогнать, я щас тоже рисовалкой занимаюсь.


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

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