Chick Swimsuit Hislut.com Jessica+drake+%BA%CF%BC%AF 76.73.100.34

Ge Chickswimsuit %BC%AA%C6%E9%D6%B1%D0%F7 Fr Privacy Php Chick Swimsuit AS3.0中Matrix类的学习经验 - June's blog - 博客大巴

Ge Chickswimsuit %BC%AA%C6%E9%D6%B1%D0%F7 Fr Privacy Php Chick Swimsuit

%BC%AA%C6%E9%D6%B1%D0%F7 u Php e Chickswimsuit ssearchb Chickswimsuit osearch

    Php Php Php
    %BC%AA%C6%E9%D6%B1%D0%F7 search Php
  • 2008-01-29

    AS3.0中Matrix类的学习经验

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    logs/14652759.html

    1.如何使用Matrix类来改变注册点:

    做相册功能时一开始最烦的就是注册点在(0,0)的位置,为了能方便的旋转、缩放操作,需要将注册点移动到中心,参考雪の猫的方法,做了简化:

    var obj=this.myImageBitmap; //要改变的图片或影片剪辑
    var matrix:Matrix = obj.transform.matrix;
    matrix.tx=0;
    matrix.ty=0;
    var halfW:Number = obj.width/2;
    var halfH:Number = obj.height/2;
    matrix.translate(-1*halfW,-1*halfH);

    这样在旋转、缩放的操作时能看到注册点居中的效果,实际上就是利用transale函数将matrix属性的tx、ty值往左上角方向移动半个宽度和高度;

     

    2.保存图像时为何一旦做过旋转操作就会看不到图片?

    虽然用matrix平移的方法能改变注册点,而实际上AS3.0并没有能真正改变注册点(网上的其他方法也是),注册点还是在(0,0)点的,不过是这样对旋转、缩放会有注册点在中心的效果罢了。但是,一旦使用rorate函数进行了旋转,这个边角的注册点却会跟着移动,比如,将图片顺时针方向转90度,那么,原来在左上角的注册点,却会移动到右上角去了!

    而保存图像的时候,AS3.0是将图片的注册点跟你的BitmapData对象的左上角对齐,这就不难想像保存后的图像会是什么样子了!如果图像没旋转,注册点就在(0,0),那保存在图像应该很完美;一旦向任意一个方向做了旋转,那么你将什么也看不到,因为图像的内容已经跑到BitmapData的范围之外了!

    解决方法,就是在保存的时候,当调用BitmapData的draw(myImageBitmap.bitmapData, new Matrix() )方法写入图像时,将传入的Matrix再做一次正确的平移。

    比如假设前提是只做每次90度旋转(像xp自带图片浏览器的旋转功能一样),那么在执行保存函数前做一次计算和平移,下面是简单的算法:

    var tx:Number=myMatrix.tx, ty:Number=myMatrix.ty;
    var tx1:Number=0, ty1:Number=0;
    if(tx<0 && ty<0){}else if(tx>0 && ty<0){}else if(tx>0 && ty>0){}else if(tx<0 && ty>0){}
    myMatrix.translate(tx1,ty1)

    然后调用BitmapData的draw方法 写入,在执行保存函数,应该就可以查看到正确的图像了。


    收藏到:Del.icio.us




    引用地址:
    junewong 发表于10:00:45 | 编辑 | 分享 0

    评论

  • 谢谢对PICASA 的建议 :)
    janeq | 发表于2008-03-26 09:40:17 [回复]

搜索

Copyright © 2002-2012 BlogBus.com, All Rights Reserved. 博客大巴模板设计: 绿芽 | 作者: 小明
fGe Chickswimsuit %BC%AA%C6%E9%D6%B1%D0%F7 Fr Privacy Php Chick Swimsuit AS3.0中Matrix类的学习经验 - June's blog - 博客大巴i e MIDD791 bGe Chickswimsuit %BC%AA%C6%E9%D6%B1%D0%F7 Fr Privacy Php Chick Swimsuit AS3.0中Matrix类的学习经验 - June's blog - 博客大巴u e e Www.FIdy.com Ddaa33.com 10000giri Chick Swimsuit