作者ben0209 (邦邦)
看板Flash
標題Re: [問題] 惱人的Matrix問題?
時間Fri Sep 9 18:19:34 2011
廢話不多說,直接提供範例:
<?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
推 dsmwang:想請問一下,我能完全理解這個程式,但我只會用.swf檔呈現 09/09 19:56
→ dsmwang:但看這原始碼應該像是能夠嵌入某種東西而快速使用的 09/09 19:57
→ dsmwang:那我應該怎麼做才能直接使用程式碼,跳過Flash IDE呢? 09/09 19:58
推 jeaby:樓上你抓flash Develop + flexSDK 就可以不用Flash IDE了 09/09 23:38
推 dsmwang:喔,還是得編譯出swf就是了 09/10 03:13
→ dsmwang:那本篇文用xml格式的原因是啥呢?Flex SDK很方便抓xml? 09/10 03:14
→ aquarianboy:沒什麼原因,因為Flex的code就是長這樣 :) 09/10 04:39
推 dsmwang:哦,原來是這樣,感謝 =) 09/10 05:24
→ ben0209:若只點出重點部分,就是 translage(-x, -y) 的那個負號 09/13 11:53