如何使对象桅杆成为舞台的一个区域

时间:2014-02-27 23:15:16

标签: actionscript-3

我已经在网上搜索了一个接近此的解决方案,但没有找到。 我的意思是像所有教程一样 like this onethis one您将图片作为背景放置,然后制作一个矩形(或任何形状),用于取消屏蔽移动该矩形/形状(面具)的区域。 / p>

所以我的问题是这样的:我如何在舞台上移动矩形,但显示的内容保持不变。显示我的意思是我呈现这张照片。

enter image description here

(实际面具是红色边框) 所以在开始时我的面具定位在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();
    }

1 个答案:

答案 0 :(得分:0)

也许您实际上并不需要面具。您可以使用 bitMapData 类拍摄舞台任何部分的“图片”。然后,您可以使用该bitMapData创建 BitMap ,并将位图放置在您想要的任何位置。

你说'椭圆是静态的......'表明它不会移动,因此你不必更新bitMapData的图片。但是如果椭圆 改变位置,只需在舞台上拍摄原始区域的另一个“图片”,然后重新绘制BitMap。