作者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
1F:推 dsmwang:想请问一下,我能完全理解这个程式,但我只会用.swf档呈现 09/09 19:56
2F:→ dsmwang:但看这原始码应该像是能够嵌入某种东西而快速使用的 09/09 19:57
3F:→ dsmwang:那我应该怎麽做才能直接使用程式码,跳过Flash IDE呢? 09/09 19:58
4F:推 jeaby:楼上你抓flash Develop + flexSDK 就可以不用Flash IDE了 09/09 23:38
5F:推 dsmwang:喔,还是得编译出swf就是了 09/10 03:13
6F:→ dsmwang:那本篇文用xml格式的原因是啥呢?Flex SDK很方便抓xml? 09/10 03:14
7F:→ aquarianboy:没什麽原因,因为Flex的code就是长这样 :) 09/10 04:39
8F:推 dsmwang:哦,原来是这样,感谢 =) 09/10 05:24
9F:→ ben0209:若只点出重点部分,就是 translage(-x, -y) 的那个负号 09/13 11:53