在聲明了包與類并且導(dǎo)入了相關(guān)的類之后,我定義了一些在程序中會用到的常量,(注:這段程序會在一個shape內(nèi)繪制內(nèi)容,然后會復(fù)制幾個shape并讓他旋轉(zhuǎn)一定角度,作者把這些shape稱為段(segment),把我弄得暈暈的,總讓我想起匯編的segment ) INIT_SEGMENTS是開始時圍繞所繪制的線條旋轉(zhuǎn)的段的個數(shù),MAX_SEGEMNTS和MIN_SEGMENTS 就是最大值與最小值了, THICKNESS與COLOR用來定義線條的外觀,最后,ROTATION_RATE用來控制當(dāng)你繪制的時候,shape旋轉(zhuǎn)得多快。
隨后的一些屬性用來保持程序中創(chuàng)建的shape和Sprite的引用, _shapeHolder是一個大容器,所有的shape添加在他里面,他會在你鼠標(biāo)繪制的時候旋轉(zhuǎn), _shapes向量數(shù)組存貯所有創(chuàng)建的shape實例。
引用:
ActionScript3.0中的Vector類型是Flash Player10新增的內(nèi)容,是一個與Array相似的數(shù)據(jù)結(jié)構(gòu),可以使用任何你知道的有關(guān)數(shù)組的方法操作,但是有一套更為嚴(yán)格的規(guī)則,最明顯的是 Vector在創(chuàng)建的時候需要指定一個參數(shù)類型,并且它只接受指定參數(shù)類型的數(shù)據(jù),如下面的一句代碼:
var sprites:Vector.<Sprite> = new Vector.<Sprite>();
你只能把Sprite類的實例放入數(shù)組,不像Array一樣你可以放任何類型的數(shù)據(jù),這樣做最大的好處就是任何被添加到Vector里的數(shù)據(jù)你都明確知道它的類型,并不需要從Object類型轉(zhuǎn)換,從Vector里取出來的數(shù)據(jù)并不需要做類型檢查。
var sprite:Sprite = sprites.pop()
如果你試圖在一個Array類型上這么錯,編譯器會拋出一個錯誤,Vector讓代碼更加干凈,執(zhí)行速度更快。
在類構(gòu)造器內(nèi),我只是調(diào)用了init()方法。通常,當(dāng)我需要超過兩到三行代碼來初始化程序的時候,我會把它們放在一個名為init的方法內(nèi),然后在構(gòu)造器中調(diào)用。
init方法內(nèi)我做的第一件事是創(chuàng)建_shapeHolder,把他定位在舞臺的中間并且添加到顯示列表。
代碼:
_shapeHolder = new Sprite(); _shapeHolder.x = stage.stageWidth / 2; _shapeHolder.y = stage.stageHeight / 2; addChild(_shapeHolder);
然后我初始化_shapes向量數(shù)組,用一個循環(huán)調(diào)用addSegment()方法創(chuàng)建所有的段。addSegment()方法是用來添加一個段到 _shapeHolder容器的。
循環(huán)結(jié)束后調(diào)用positionSegment()方法來圍繞中心旋轉(zhuǎn)所有的段。
代碼:
_shapes = new Vector.<Shape>(); for (var i:int = 0; i < INIT_SEGMENTS; i++ ) { addSegment(); } positionSegments();
現(xiàn)在我們來看看addSegment()方法。
代碼:
var shape:Shape = new Shape(); if (_shapes.length > 0) { shape.graphics.copyFrom(_shapes[0].graphics); } else { shape.graphics.lineStyle(THICKNESS, COLOR); } _shapes.push(shape); _shapeHolder.addChild(shape);
創(chuàng)建一個新的Shape實例之后,我檢查一下他是不是第一個被創(chuàng)建的,如果不是第一個我要用來繪圖的shape,我調(diào)用神奇的copyFrom()方法,這會把我在第一個shape中繪制的所有的內(nèi)容復(fù)制到現(xiàn)在的shape,如果是第一個shape,我就調(diào)用 lineStyle()方法定義繪制的線條樣式,最后,我把新創(chuàng)建的shape添加到_shapes數(shù)組同時添加進_shapesHolder容器。
出處:藍色理想
責(zé)任編輯:bluehearts
上一頁 ActionScript3.0 Image Effects 復(fù)制圖形 [2] 下一頁 ActionScript3.0 Image Effects 復(fù)制圖形 [4]
◎進入論壇RIA設(shè)計與應(yīng)用版塊參加討論
|