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

rsdrp 11.12.2007 04:15

Создание инструмента рисования овала
 
Подскажите пожалуйста как реализовать в графическом редакторе (написанном во флеше) инструмент для рисования овала?

wvxvw 11.12.2007 04:58

Код:

public static function crlIn(mc:MovieClip, r:Number, c:Number, a:Number):MovieClip {
                var _mc:MovieClip = mc.createEmptyMovieClip("crl"+counter, mc.getNextHighestDepth());
                var c1:Number=r*(Math.SQRT2-1);
                var c2:Number=r*Math.SQRT2/2;
                var d:Number = r*2;
                _mc.beginFill(c,a);
                _mc.moveTo(d,r);
                _mc.curveTo(d,r+c1,r+c2,r+c2);
                _mc.curveTo(r+c1,d,r,d);
                _mc.curveTo(r-c1,d,r-c2,r+c2);
                _mc.curveTo(0,r+c1,0,r);
                _mc.curveTo(0,r-c1,r-c2,r-c2);
                _mc.curveTo(r-c1,0,r,0);
                _mc.curveTo(r+c1,0,r+c2,r-c2);
                _mc.curveTo(d,r-c1,d,r);
                _mc.endFill();
                return _mc;
        }


rsdrp 11.12.2007 09:11

Так а че не работает?!..(

CorC 11.12.2007 10:21

Все работает

rsdrp 11.12.2007 14:36

Цитата:

Сообщение от CorC
Все работает

Простите...
Ну а как его использовать? Просто поставить в кадр и все? Если так то не работает.
Может в нем нужно какие-то параметры поменять?

etc 11.12.2007 14:44

Если вы не понимаете, как использовать функцию, то кто пишет редактор тогда?

wvxvw 11.12.2007 16:31

Код:

var _mc:MovieClip = crlIn(this, 100, 0xff00ff, 70);
_mc._xscale = 50;
_mc._x = Stage.width/2-_mc._width/2;
_mc._y = Stage.height/2-_mc._height/2;
function crlIn(mc:MovieClip, r:Number, c:Number, a:Number):MovieClip {
        var _mc:MovieClip = mc.createEmptyMovieClip("crl"+mc.getNextHighestDepth(), mc.getNextHighestDepth());
        var c1:Number = r*(Math.SQRT2-1);
        var c2:Number = r*Math.SQRT2/2;
        var d:Number = r*2;
        _mc.beginFill(c,a);
        _mc.moveTo(d,r);
        _mc.curveTo(d,r+c1,r+c2,r+c2);
        _mc.curveTo(r+c1,d,r,d);
        _mc.curveTo(r-c1,d,r-c2,r+c2);
        _mc.curveTo(0,r+c1,0,r);
        _mc.curveTo(0,r-c1,r-c2,r-c2);
        _mc.curveTo(r-c1,0,r,0);
        _mc.curveTo(r+c1,0,r+c2,r-c2);
        _mc.curveTo(d,r-c1,d,r);
        _mc.endFill();
        return _mc;
}

Адаптированое к использованю вне класса издание %) с примером %)

rsdrp 11.12.2007 17:10

Мне нужен не генерирующийся кодом овал.. А возможность его "свободного рисования" на сцене!

etc 11.12.2007 17:27

Нужно — напишите.
По аналогии с приведенным кодом.

wvxvw 11.12.2007 21:10

Код:

_root.onMouseDown = function():Void {
        var __ax:Number = _root._xmouse;
        var __ay:Number = _root._ymouse;
        var __mc:MovieClip = null;
        _root.onEnterFrame = function():Void {
                if(__mc==null){
                        __mc = crlIn(this, 100, Math.random()*0xffffff,Math.random()*100);
                }
                __mc._x = Math.min(__ax,_root._xmouse);
                __mc._y = Math.min(__ay,_root._ymouse);
                __mc._width = Math.max(__ax,_root._xmouse)-Math.min(__ax,_root._xmouse);
                __mc._height = Math.max(__ay,_root._ymouse)-Math.min(__ay,_root._ymouse);
        }
}
_root.onMouseUp = function():Void {
        delete this.onEnterFrame;
}
function crlIn(mc:MovieClip, r:Number, c:Number, a:Number):MovieClip {
        var _mc:MovieClip = mc.createEmptyMovieClip("crl"+mc.getNextHighestDepth(), mc.getNextHighestDepth());
        var c1:Number = r*(Math.SQRT2-1);
        var c2:Number = r*Math.SQRT2/2;
        var d:Number = r*2;
        _mc.beginFill(c,a);
        _mc.moveTo(d,r);
        _mc.curveTo(d,r+c1,r+c2,r+c2);
        _mc.curveTo(r+c1,d,r,d);
        _mc.curveTo(r-c1,d,r-c2,r+c2);
        _mc.curveTo(0,r+c1,0,r);
        _mc.curveTo(0,r-c1,r-c2,r-c2);
        _mc.curveTo(r-c1,0,r,0);
        _mc.curveTo(r+c1,0,r+c2,r-c2);
        _mc.curveTo(d,r-c1,d,r);
        _mc.endFill();
        return _mc;
}

%)


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

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