Re: [問題] 惱人的Matrix問題?

看板Flash作者 (邦邦)時間14年前 (2011/09/09 18:19), 編輯推噓4(405)
留言9則, 4人參與, 最新討論串2/2 (看更多)
廢話不多說,直接提供範例: <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal" width="800" height="600"> <mx:Script> <![CDATA[ import mx.core.UIComponent; private const HH:int = 4; private const VV:int = 3; private const H_GAP:int = 5; private const V_GAP:int = 5; protected function image1_completeHandler(event:Event):void { var img:Image = event.currentTarget as Image; var content:DisplayObject = img.content; var m_width:Number = content.width / HH; var m_height:Number = content.height / VV; var bd:BitmapData; var bmp:Bitmap; var matrix:Matrix; for(var v:int=0; v<VV; v++){ for(var h:int=0; h<HH; h++){ matrix = new Matrix(); matrix.translate(-m_width * h, -m_height * v); bd = new BitmapData(m_width, m_height); bd.draw(content, matrix); bmp = new Bitmap(bd); bmp.x = (m_width + H_GAP) * h; bmp.y = (m_height + V_GAP) * v; imgContainer.addChild(bmp); } } } ]]> </mx:Script> <mx:Image id="img" source="http://blog.liuhongwei.cn/wp-content/uploads/2009/08/java-duke-guitar.png" complete="image1_completeHandler(event)"/> <mx:UIComponent id="imgContainer" width="{img.width}" height="{img.height}" /> </mx:Application> ※ 引述《larcenciel12 (頭哥)》之銘言: : 廢話不多說直接切入問題>< : 小弟突發奇想想利用一張大圖以 bitmap類別 + Matrix類別 切割成9宮格狀 : ●●● : ●●● <<--大概是這樣子的感覺 : ●●● : 目的是為了方便對個別的切割做多張圖片的過場動畫 : 程式碼如下 : 邏輯: : 以迴圈重複九次便利用矩陣排列公式移動Translate的位置擷取後再排列成一排供測試。 : for (var i:int = 0; i < 9;i++){ : var ori:OrigamiMurexBmp = new OrigamiMurexBmp;//此行為自訂圖片 : var myBitmapData:BitmapData=new BitmapData(ori.width/3, ori.height/3) ; : var mat:Matrix=new Matrix(); : mat.translate( (i % 3 )* ori.width/3 , Math.floor(i / 3) * ori.height/3); : myBitmapData.draw(ori, mat); : var clip2_mc:Bitmap = new Bitmap(myBitmapData); : clip2_mc.x = i * 73;//排列切出來的圖片 : addChild( clip2_mc); : }; : 但執行的結果只會出現一張圖片(但試著把mat.translate這行改成自訂的數字 : 例如 : mat.translate(10,10) 卻會出現9張的結果 : 但只要一透過迴圈來定義便會出問題..(只有一張) : 翻了官方的文件及GOOGLE大家似乎也沒出現類似問題..實在令人惱火..>< : 請問各位高手們小弟的邏輯哪裡出了問題呢><? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.147.239.66

09/09 19:56, , 1F
想請問一下,我能完全理解這個程式,但我只會用.swf檔呈現
09/09 19:56, 1F

09/09 19:57, , 2F
但看這原始碼應該像是能夠嵌入某種東西而快速使用的
09/09 19:57, 2F

09/09 19:58, , 3F
那我應該怎麼做才能直接使用程式碼,跳過Flash IDE呢?
09/09 19:58, 3F

09/09 23:38, , 4F
樓上你抓flash Develop + flexSDK 就可以不用Flash IDE了
09/09 23:38, 4F

09/10 03:13, , 5F
喔,還是得編譯出swf就是了
09/10 03:13, 5F

09/10 03:14, , 6F
那本篇文用xml格式的原因是啥呢?Flex SDK很方便抓xml?
09/10 03:14, 6F

09/10 04:39, , 7F
沒什麼原因,因為Flex的code就是長這樣 :)
09/10 04:39, 7F

09/10 05:24, , 8F
哦,原來是這樣,感謝 =)
09/10 05:24, 8F

09/13 11:53, , 9F
若只點出重點部分,就是 translage(-x, -y) 的那個負號
09/13 11:53, 9F
文章代碼(AID): #1EQUWuQm (Flash)
文章代碼(AID): #1EQUWuQm (Flash)