`

[转]项目遇到的两个问题,屏幕中心缩放,Bitmap的清空

阅读更多
http://uh.9ria.com/space-12147-do-blog-id-358.html

BitmapData如果不改变大小,只是更新内容的话,原来都是dispose然后再new一个,否则会一直叠在上面。。
很浪费。

今天请教了下别人,算解决了。

_bitmapData.fillRect(new Rectangle(0,0,_width,_height),0x00FFFFFF);

我楞是这么长时间没有发现fillRect这么个方法。可见还是原来想到的那个问题:

许多方法不是Adobe没有提供,而且我们自己不去用。



屏幕中心缩放说起来简单,也做过,但这次还要考虑中心点的问题,混在一起就混乱了。

后来我决定一步一步来。

首先,给grid对象读取/设置中心点的方法:

public function get globalCenter():Point{
   return parent.localToGlobal(new Point(x+width/2,y+height/2));
}
  public function set globalCenter(value:Point):void{
   var _localPoint:Point=parent.globalToLocal(value);
   x=_localPoint.x-width/2;
   y=_localPoint.y-height/2;
}
//一定注意啊,width,height只有在parent下才是我们要的值。。没缩放好说,缩放了就不同了。



然后,保证缩放前后中心点与屏幕中心的距离也按照比例进行变化:

var _oldScale:Number=_grid.scaleX;
   var _oldGlobalCenter:Point=_grid.globalCenter;
   _grid.scaleX=_grid.scaleY=Math.pow(2,3-(SizeBN.y-110)/65*5);
   _grid.globalCenter=new Point(stage.stageWidth/2+(_oldGlobalCenter.x-stage.stageWidth/2)/_oldScale*_grid.scaleX,
           stage.stageHeight/2+(_oldGlobalCenter.y-stage.stageHeight/2)/_oldScale*_grid.scaleY);



这些坐标类的东西混在一起就全乱了。

所以,步步攻艰吧。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics