Movieclips与位图掩码冲突

时间:2013-02-17 04:42:47

标签: actionscript-3

我试图揭示这个最初是位图的影片剪辑图像,但需要将其用作位图。由于某种原因,它不起作用...... 它没有抛出任何错误......我需要在用户按下它时屏蔽这个图像......然后将其与另一个位图进行比较以执行功能。但出于某种原因,正如我前面提到的,它没有成功。有人能帮帮我吗??这是它的代码...

import flash.display.Graphics;
import flash.display.MovieClip;
import flash.display.BitmapData;

var mouseclick:Number=0;
var maskedbg_mc:maskedbg = new maskedbg ();
var masking:Sprite = new Sprite()               

addChild (maskedbg_mc);
maskedbg_mc.x = 18;
maskedbg_mc.y = 343;
var bitmapDataCopy:BitmapData = new BitmapData(742,165,true,0x00FFFFFF);
var b:Bitmap = new Bitmap(bitmapDataCopy);

bitmapDataCopy.draw(maskedbg_mc);

b.mask = masking;
var Testing:BitmapData = new BitmapData(maskedbg_mc.width, maskedbg_mc.height, true, 0x00000000);


addChild(masking);


stage.addEventListener(MouseEvent.MOUSE_DOWN, Pressing);
stage.addEventListener(MouseEvent.MOUSE_MOVE, Moving);
stage.addEventListener(MouseEvent.MOUSE_UP, Lifting);


function Pressing(event:MouseEvent):void {
mouseclick = 1;
}


function Moving(event:MouseEvent):void {
if (mouseclick == 1) {
masking.graphics.beginFill(0x000000);
masking.graphics.drawEllipse(mouseX, mouseY, 70, 60);
masking.graphics.endFill();
}
}


function Lifting(event:MouseEvent):void {
mouseclick = 0;
}

if ( bitmapDataCopy.compare(Testing) ==0 )
{
    trace ("Awesomness")
}

1 个答案:

答案 0 :(得分:1)

忽略你的代码,我注意到你没有在显示列表中添加“b”(被屏蔽的DisplayObject),而你正在添加“maskedbg​​_mc”,它实际上没有在你的代码中被屏蔽。你有理由拥有这两个显示对象吗?

我建议您遵循动作编码约定:

http://sourceforge.net/adobe/flexsdk/wiki/Coding%20Conventions/

当你的变量和函数的首字母大写时,你的代码看起来很混乱。它们看起来像是类。