我已经在网上搜索了一个接近此的解决方案,但没有找到。 我的意思是像所有教程一样 like this one和this one您将图片作为背景放置,然后制作一个矩形(或任何形状),用于取消屏蔽移动该矩形/形状(面具)的区域。 / p>
所以我的问题是这样的:我如何在舞台上移动矩形,但显示的内容保持不变。显示我的意思是我呈现这张照片。
(实际面具是红色边框) 所以在开始时我的面具定位在x = 50的某个位置; y = 250,然后我决定将它移到右边x = 350; y = 250.但是我希望蒙版显示相同的属性(或者更明显地说 - 椭圆的相同部分,在x = 50到x = 150 y = 50到y = 100的区域内)椭圆。
我这样做的原因是因为椭圆是静态的(因为我想显示我想要实现的东西)但我真正想要的是让椭圆移动(改变它的方向),所以当我移动蒙版时在某个地方,它会显示舞台的区域以及圆圈的哪个部分在那里移动(从x = 50到x = 150,y = 50到y = 100的区域)
所以我再次陈述我的问题:无论我在哪里移动面具,我如何制作面具,显示我想要的区域?
我所拥有的代码与给出的链接相同:
[Embed(source = '../../lib/Contrast_by_MaNi3k.png')]
private var backgroundClass:Class;
private var background:Bitmap = new backgroundClass();
private var myMask:Sprite;
private var myMaskSize:Number = 100;
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
addChild(background);
myMask = new Sprite();
myMask.graphics.beginFill(0x00FF00);
myMask.graphics.drawRect(0, 0, myMaskSize, myMaskSize);
myMask.x = 350;
myMask.y = 250;
addChild(myMask);
background.mask = myMask;
stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDown);
stage.addEventListener(MouseEvent.MOUSE_UP, mouseReleased);
}
private function mouseDown(event:MouseEvent):void {
myMask.startDrag();
}
private function mouseReleased(event:MouseEvent):void {
myMask.stopDrag();
}
答案 0 :(得分:0)
也许您实际上并不需要面具。您可以使用 bitMapData 类拍摄舞台任何部分的“图片”。然后,您可以使用该bitMapData创建 BitMap ,并将位图放置在您想要的任何位置。
你说'椭圆是静态的......'表明它不会移动,因此你不必更新bitMapData的图片。但是如果椭圆 改变位置,只需在舞台上拍摄原始区域的另一个“图片”,然后重新绘制BitMap。