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

yava 22.10.2007 14:28

Библиотеки для рисования
 
Встречал ли кто-нибудь уже готовые исходные коды для рисования 2D и 3D объектов. Если встречали, киньте ссылочку посмотреть!

wvxvw 22.10.2007 14:42

Код:

import flash.display.BitmapData;
import flash.geom.Matrix;
import flash.geom.Rectangle;
import flash.filters.BevelFilter;
import flash.filters.GlowFilter;
class GFX {
        private static var __counter:Number = 0;
        public static function rct(_mc:MovieClip, w:Number, h:Number, c:Number, a:Number, lc:Number):MovieClip {
                var mc:MovieClip = _mc.createEmptyMovieClip("rct"+counter, _mc.getNextHighestDepth());
                mc.beginFill(c,a);
                if(lc!=undefined){
                        mc.lineStyle(1,lc,100);
                }
                mc.moveTo(0,0);
                mc.lineTo(w,0);
                mc.lineTo(w,h);
                mc.lineTo(0,h);
                mc.lineTo(0,0);
                mc.endFill();
                return mc;
        }
        public static function rctLR(_mc:MovieClip, w:Number, h:Number, c:Number, a:Number, r:Number):MovieClip {
                var mc:MovieClip = _mc.createEmptyMovieClip("rctLR"+counter, _mc.getNextHighestDepth());
                mc.beginFill(c,a);
                mc.moveTo(0,r);
                mc.curveTo(0,0,r,0);
                mc.lineTo(w,0);
                mc.lineTo(w,h);
                mc.lineTo(0,h);
                mc.lineTo(0,r);
                mc.endFill();
                return mc;
        }
        public static function rctLRBR(_mc:MovieClip, w:Number, h:Number, c:Number, a:Number, r:Number):MovieClip {
                var mc:MovieClip = _mc.createEmptyMovieClip("rctLRBR"+counter, _mc.getNextHighestDepth());
                var mtx:Matrix = new Matrix();
                mtx.createGradientBox(w, h);
                _mc.beginGradientFill("linear", [c,0xffffff],[a,a],[0,255], mtx);
                mc.moveTo(0,r);
                mc.curveTo(0,0,r,0);
                mc.lineTo(w,0);
                mc.lineTo(w,h-r);
                mc.curveTo(w,h,w-r,h);
                mc.lineTo(0,h);
                mc.lineTo(0,r);
                mc.endFill();
                return mc;
        }
        public static function rctLRR(_mc:MovieClip, w:Number, h:Number, c:Number, a:Number, r:Number):MovieClip {
                var mc:MovieClip = _mc.createEmptyMovieClip("rctLR"+counter, _mc.getNextHighestDepth());
                mc.beginFill(c,a);
                mc.moveTo(0,r);
                mc.curveTo(0,0,r,0);
                mc.lineTo(w-r,0);
                mc.curveTo(w,0,w,r);
                mc.lineTo(w,h);
                mc.lineTo(0,h);
                mc.lineTo(0,r);
                mc.endFill();
                return mc;
        }
        public static function fork(_mc:MovieClip, w:Number, h:Number, c:Number, a:Number, lc:Number):MovieClip {
                var mc:MovieClip = _mc.createEmptyMovieClip("rct"+counter, _mc.getNextHighestDepth());
                mc.beginFill(c,a);
                if(lc!=undefined){
                        mc.lineStyle(1,lc,100);
                }
                mc.moveTo(0,-h/8);
                mc.lineTo(w,0);
                mc.lineTo(1,h/8);
                mc.lineTo(1,h*7/8);
                mc.lineTo(w,h);
                mc.lineTo(0,h*9/8);
                mc.lineTo(0,-h/8);
                mc.endFill();
                return mc;
        }
        public static function pentacon(_mc:MovieClip, w:Number, h:Number, c:Number, a:Number, lc:Number):MovieClip {
                var mc:MovieClip = _mc.createEmptyMovieClip("pntc"+counter, _mc.getNextHighestDepth());
                if(lc!=undefined){
                        mc.lineStyle(1,lc,100);
                }
                mc.beginFill(c,a);
                mc.moveTo(0,h/3);
                mc.lineTo(w/2,0);
                mc.lineTo(w,h/3);
                mc.lineTo(w,h);
                mc.lineTo(0,h);
                mc.lineTo(0,h/3);
                mc.endFill();
                return mc;
        }
        public static function drct(_mc:MovieClip, w:Number, h:Number, c:Number, a:Number):MovieClip {
                var mc:MovieClip = _mc.createEmptyMovieClip("drct"+counter, _mc.getNextHighestDepth());
                mc.beginFill(c,a);
                mc.moveTo(0,0);
                mc.lineTo(w/3,0);
                mc.lineTo(w/3,h);
                mc.lineTo(0,h);
                mc.lineTo(0,0);
                mc.moveTo(w*2/3,0);
                mc.lineTo(w,0);
                mc.lineTo(w,h);
                mc.lineTo(w*2/3,h);
                mc.lineTo(w*2/3,0);
                mc.endFill();
                return mc;
        }
        public static function lrct(_mc:MovieClip, w:Number, h:Number, c:Number, a:Number):MovieClip {
                var mc:MovieClip = _mc.createEmptyMovieClip("lrct"+counter, _mc.getNextHighestDepth());
                mc.beginFill(0,0);
                mc.lineStyle(1,c,a,true,"none");
                mc.moveTo(0,0);
                mc.lineTo(w,0);
                mc.lineTo(w,h);
                mc.lineTo(0,h);
                mc.lineTo(0,0);
                mc.endFill();
                return mc;
        }
        public static function lfrct(_mc:MovieClip, w:Number, h:Number, c:Number, a:Number, cl:Number):MovieClip {
                var mc:MovieClip = _mc.createEmptyMovieClip("lfrct"+counter, _mc.getNextHighestDepth());
                mc.beginFill(c,a);
                mc.lineStyle(1,cl,100,true,"none");
                mc.moveTo(0,0);
                mc.lineTo(w-1,0);
                mc.lineTo(w-1,h-1);
                mc.lineTo(0,h-1);
                mc.lineTo(0,0);
                mc.endFill();
                return mc;
        }
        public static function crl(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;
        }
        public static function gcrl(mc:MovieClip, r:Number, c:Array, a:Array, o:Object):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;
                var mtx:Matrix = new Matrix();
                mtx.createGradientBox(r*2, r*2, o._rotation);
                _mc.beginGradientFill("linear", c,a,[0,128,255], mtx);
                _mc.lineStyle(2, o._lineColor, 100, false);
                _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();
                var b_f:BevelFilter = new BevelFilter(5, 90, 0xffffff, 30, 0x666666, 30, 2, 20, 1, 2);
                _mc.filters = new Array(b_f);
                return _mc;
        }
        public static function hrct(_mc:MovieClip, w:Number, h:Number, c:Number, a:Number):MovieClip {
                var mc:MovieClip = _mc.createEmptyMovieClip("rct"+counter, _mc.getNextHighestDepth());
                mc.beginFill(c,a);
                mc.lineStyle(Styles.__linestyle.w,Styles.__linestyle.c,Styles.__linestyle.a,true);
                mc.moveTo(0,0);
                mc.lineTo(w,0);
                mc.lineTo(w,h);
                mc.lineTo(0,h);
                mc.lineTo(0,0);
                mc.moveTo(2,2);
                mc.lineTo(w-2,2);
                mc.lineTo(w-2,h-2);
                mc.lineTo(2,h-2);
                mc.lineTo(2,2);
                mc.endFill();
                return mc;
        }
        public static function rounded(_mc:MovieClip, w:Number, h:Number, c:Number, a:Number, r:Number, lc:Number):MovieClip {
                var mc:MovieClip = _mc.createEmptyMovieClip("rnd"+counter, _mc.getNextHighestDepth());
                if(lc!=undefined){
                        mc.lineStyle(1,lc,100);
                }
                mc.beginFill(c,a);
                mc.moveTo(r,0);
                mc.lineTo(w-r,0);
                mc.curveTo(w,0,w,r);
                mc.lineTo(w,h-r);
                mc.curveTo(w,h,w-r,h);
                mc.lineTo(r,h);
                mc.curveTo(0,h,0,h-r);
                mc.lineTo(0,r);
                mc.curveTo(0,0,r,0);
                mc.endFill();
                return mc;
        }
        public static function ground(_mc:MovieClip, w:Number, h:Number, c:Array, a:Array, r:Number):MovieClip {
                var mc:MovieClip = _mc.createEmptyMovieClip("rnd"+counter, _mc.getNextHighestDepth());
                var mtx:Matrix = new Matrix();
                mtx.createGradientBox(w,h,Math.PI/2);
                mc.beginGradientFill("linear",c,a,[0,255],mtx);
                mc.moveTo(r,0);
                mc.lineTo(w-r,0);
                mc.curveTo(w,0,w,r);
                mc.lineTo(w,h-r);
                mc.curveTo(w,h,w-r,h);
                mc.lineTo(r,h);
                mc.curveTo(0,h,0,h-r);
                mc.lineTo(0,r);
                mc.curveTo(0,0,r,0);
                mc.endFill();
                var g_f:GlowFilter = new GlowFilter(0xe2e2e2,1,8,8,2,1);
                mc.filters = new Array(g_f);
                return mc;
        }

2b continued...

wvxvw 22.10.2007 14:42

Код:

public static function bevel(_mc:MovieClip, w:Number, h:Number, c:Array, a:Number):MovieClip {
                var mc:MovieClip = _mc.createEmptyMovieClip("rct"+counter, _mc.getNextHighestDepth());
                var mtx:Matrix = new Matrix();
                mtx.createGradientBox(w,h);
                mtx.translate(0,h/2);
                mc.beginGradientFill("radial",c,[100,100],[0,255],mtx);
                mc.lineStyle(Styles.__linestyle.w,Styles.__linestyle.c,Styles.__linestyle.a,true);
                mc.moveTo(0,0);
                mc.lineTo(w,0);
                mc.lineTo(w,h);
                mc.lineTo(0,h);
                mc.lineTo(0,0);
                mc.endFill();
                var b_ft:BevelFilter = new BevelFilter(h/4, 90, 0xffffff, .4, 0x000000, .3, 30, 30, 5, 3, "inner", false);
                var g_ft:GlowFilter = new GlowFilter(0, .3, w/6, h/6, 2, 3, true, false);
                var filterArray:Array = new Array();
                filterArray.push(b_ft);
                filterArray.push(g_ft);
                mc.filters = filterArray;
                return mc;
        }
        public static function grid(_mc:MovieClip, w:Number, h:Number, b:BitmapData):MovieClip {
                var mc:MovieClip = _mc.createEmptyMovieClip("rct"+counter, _mc.getNextHighestDepth());
                mc.beginBitmapFill(b);
                mc.lineStyle(Styles.__linestyle.w,Styles.__linestyle.c,Styles.__linestyle.a,true);
                mc.moveTo(0,0);
                mc.lineTo(w,0);
                mc.lineTo(w,h);
                mc.lineTo(0,h);
                mc.lineTo(0,0);
                mc.endFill();
                return mc;
        }
        public static function grad(_mc:MovieClip, w:Number, h:Number, cl:Array, r:Number):MovieClip {
                var mc:MovieClip = _mc.createEmptyMovieClip("grad"+counter, _mc.getNextHighestDepth());
                var mtx:Matrix = new Matrix();
                mtx.createGradientBox(w,h,r);
                mc.beginGradientFill("linear",cl,[100, 100],[0, 255],mtx,"pad","RGB");
                mc.moveTo(0,0);
                mc.lineTo(w,0);
                mc.lineTo(w,h);
                mc.lineTo(0,h);
                mc.lineTo(0,0);
                mc.endFill();
                return mc;
        }
        public static function mgrad(_mc:MovieClip, w:Number, h:Number, cl:Array, al:Array, rt:Array, r:Number):MovieClip {
                var mc:MovieClip = _mc.createEmptyMovieClip("grad"+counter, _mc.getNextHighestDepth());
                var mtx:Matrix = new Matrix();
                mtx.createGradientBox(w,h,r);
                mc.beginGradientFill("linear",cl,al,rt,mtx,"pad","RGB");
                mc.moveTo(0,0);
                mc.lineTo(w,0);
                mc.lineTo(w,h);
                mc.lineTo(0,h);
                mc.lineTo(0,0);
                mc.endFill();
                return mc;
        }
        public static function rainbow(_mc:MovieClip, w:Number, h:Number, r:Number):MovieClip {
                var mc:MovieClip = _mc.createEmptyMovieClip("rainbow"+counter, _mc.getNextHighestDepth());
                var mtx:Matrix = new Matrix();
                mtx.createGradientBox(w,h,r);
                mc.beginGradientFill("linear",[0xff0000, 0xffff00, 0x00ff00, 0x00ffff, 0x0000ff, 0xff00ff, 0xff0000],[100, 100, 100, 100, 100, 100, 100],[0, 43, 85, 128, 170, 213, 255],mtx);
                mc.moveTo(0,0);
                mc.lineTo(w,0);
                mc.lineTo(w,h);
                mc.lineTo(0,h);
                mc.lineTo(0,0);
                mc.endFill();
                return mc;
        }
        public static function triang(_mc:MovieClip, w:Number, h:Number, c:Number, r:Number):MovieClip {
                var mc:MovieClip = _mc.createEmptyMovieClip("tri"+counter, _mc.getNextHighestDepth());
                mc.beginFill(c,100);
                switch (r) {
                        case 0 :
                                mc.moveTo(w/2,0);
                                mc.lineTo(w,h);
                                mc.lineTo(0,h);
                                mc.lineTo(w/2,0);
                                mc.endFill();
                                return mc;
                                break;
                        case 90 :
                                mc.moveTo(0,0);
                                mc.lineTo(w,h/2);
                                mc.lineTo(0,h);
                                mc.lineTo(0,0);
                                mc.endFill();
                                return mc;
                                break;
                        case 180 :
                                mc.moveTo(0,0);
                                mc.lineTo(w,0);
                                mc.lineTo(w/2,h);
                                mc.lineTo(0,0);
                                mc.endFill();
                                return mc;
                                break;
                        case 270 :
                                mc.moveTo(w,0);
                                mc.lineTo(w,h);
                                mc.lineTo(0,h/2);
                                mc.lineTo(w,0);
                                mc.endFill();
                                return mc;
                                break;
                        default :
                                mc.moveTo(w/2,0);
                                mc.lineTo(w,h);
                                mc.lineTo(0,h);
                                mc.lineTo(w/2,0);
                                mc.endFill();
                                return mc;
                                break;
                }
        }
        public static function dtriang(_mc:MovieClip, w:Number, h:Number, c:Number, r:Number):MovieClip {
                var mc:MovieClip = _mc.createEmptyMovieClip("tri"+counter, _mc.getNextHighestDepth());
                mc.beginFill(c,100);
                switch (r) {
                        case 0 :
                                mc.moveTo(0,0);
                                mc.lineTo(w/2,h/2);
                                mc.lineTo(0,h);
                                mc.lineTo(0,0);
                                mc.moveTo(w/2,0);
                                mc.lineTo(w,h/2);
                                mc.lineTo(w/2,h);
                                mc.endFill();
                                return mc;
                                break;
                        case 180 :
                                mc.moveTo(w/2,0);
                                mc.lineTo(w/2,h);
                                mc.lineTo(0,h/2);
                                mc.lineTo(w/2,0);
                                mc.moveTo(w,0);
                                mc.lineTo(w,h);
                                mc.lineTo(w/2,h/2);
                                mc.lineTo(w,0);
                                mc.endFill();
                                return mc;
                                break;
                }
        }
        public static function set counter(n:Number):Void {
                __counter = n;
        }
        public static function get counter():Number {
                return ++__counter;
        }
}

Мое, ©.

yava 22.10.2007 15:19

А есть ли что-то для AC2?

wvxvw 22.10.2007 15:21

Это самый что ни на есть АС2 %)


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

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