2012-04-11 83 views
0

我正在使用Flash CS4,AS2。在AS2中,阻止点击外部SWF

我有第一个SWF,接口,它通过attachMovie加载外部SWF,页面。页面本身包含可点击的按钮。我想要做的是启用和禁用页面上的按钮,而不更改页面的代码。我只能更改界面的内容。

我一直在使用一个拦截尝试,用影片剪辑:

onrelease = function() {}; 
onpress = function() {}; 
useHandCursor = false; 

然而,这只会阻止在界面中点击和外部网页似乎仍然获得鼠标事件。

有没有办法启用和禁用页面获得点击?我不想停止它的执行(没有什么停止())。

谢谢。

回答

0

如何在特定深度(通过MovieClipLoader的loadClip)和顶部的“阻挡器”透明MovieClip(getNextHighestDepth())上使用空白按下/释放处理程序来加载内容,如果它是_visible属性,不需要 ?

这里有一个基本的例子:

var loadedContent:MovieClip = createEmptyMovieClip("loadedContent",getNextHighestDepth()); 
var loader:MovieClipLoader = new MovieClipLoader(); 
loader.loadClip("as2loadee.swf",loadedContent);//loads content on _level0, unlike loadMovieNum 

var blocker:MovieClip = createEmptyMovieClip("blocker",getNextHighestDepth()); 
blocker.beginFill(0,0);//transparent fill 
drawRect(blocker,0,0,100,100);//these values might change 
blocker.endFill(); 
blocker.onPress = function():Void{ 
    trace("nuh-uh!"); 
} 

function drawRect(target:MovieClip,x:Number,y:Number,w:Number,h:Number):Void{ 
    target.lineTo(x ,y ); 
    target.lineTo(x+w,y ); 
    target.lineTo(x+w,y+h); 
    target.lineTo(x ,y+h); 
    target.lineTo(x ,y ); 
} 
+0

这就是我所做的,和它的作品内部的鼠标事件,但它似乎并没有阻止发送到_level1 SWF事件。 – 2012-04-12 12:13:11

+0

如果你在_level1上有SWF,这意味着你已经通过loadMovie()或loadMovieNum()加载了它,这与我建议的MovieClipLoader选项不同,后者在_level0加载内容,所以你可以放置在顶部阻滞剂)。尝试类似上面的代码片段。 MovieClipLoader更加灵活,并且onLoadInit/onLoadComplete事件从长远来看将会很有用。另外请注意,AS2是区分大小写的:'onrelease'与'onRelease'不一样# – 2012-04-13 08:43:38

+0

@BahamutDragons解决问题的任何喜悦? – 2012-04-17 19:28:33