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);
这些坐标类的东西混在一起就全乱了。
所以,步步攻艰吧。