为movieclip中的按钮添加url,该按钮位于Actionscript 3中的另一个动画片段内

时间:2014-11-26 22:30:40

标签: actionscript-3 flash

我正在尝试为我的网站创建一个滚动缩略图导航栏,我无法添加我的按钮(图像)的URL,该按钮位于影片剪辑内(在另一部电影中) )。

我尝试使用代码:addChild,但程序一直说:

Scene 1, Layer 'Layer 2', Frame 1, Line 3, Column 12    
1046: Type was not found or was not a compile-time constant: holder3.

我使用的代码:

var image1:holder3 = new holder3();

holder3.addChild(image1);

image1.i1.addEventListener(MouseEvent.CLICK, fl_ClickToGoToWebPage_5);

function fl_ClickToGoToWebPage_5(event:MouseEvent):void
{
navigateToURL(new URLRequest("http://www.adobe.com"), "_blank");
}

我已经尝试过这段代码(就像在动作脚本2中一样):

holder3.holder2.holder1.i1.addEvent

但它也不起作用。

1 个答案:

答案 0 :(得分:0)

在谈到您的代码之前,我认为您在类和MovieClip实例名称中存在冲突,因为MovieClip实例的名称和类名称应该不同,我认为这是很多情况下1046 AS3错误:1046: Type was not found or was not a compile-time constant

要解释一下,请举例:

我在我的主stage上绘制了一个红色矩形,然后我按F8将其转换为Symbol(在我的情况下为MovieClip),我得到了一个窗口,在Name文字字段中我写了“clp_red”并进入ActionScript Linkage,我检查了Export for ActionScript,它启用了Class文字字段,其中我放了“CLP_RED”(I使用大写字母与Name有所不同,但我们可以在这里使用相同的值)。然后我想将这个新的MovieClip插入另一个(MovieClip,其中包含一个蓝色矩形),我将其拖放(红色矩形MC)作为名为“的新实例” red_01" 。对于实例名称,您不应该使用项目类名称。

因此,对于您的情况,请尝试将类名重命名为clp_holder3clp_holder2clp_holder1clp_img(例如),当您要使用实例时应该使用其他名称,例如holder3holder2,..

提示 要重命名课程,请转到您的媒体库,双击该项目的AS Linkage列,然后输入新名称,但不需要触摸Name列。

现在返回到您的代码,我认为您的阶段中已经有一个holder3实例,这就是为什么您尝试添加同一对象的新实例(在代码中为image1)它。在这里你应该明白,你不能这样做。是否在holder3中手动插入stage实例,或者使用AS代码动态创建它。

因此对于第一种情况(我从我的库中拖放了一个holder3实例), 我把它命名为holder3,它的类名是clp_holder3,所以正确的代码应该是:

holder3.holder2.holder1.i1.addEventListener(MouseEvent.CLICK, fl_ClickToGoToWebPage_5)
function fl_ClickToGoToWebPage_5(event:MouseEvent):void {
    navigateToURL(new URLRequest('http://www.example.com'), '_blank');
}

在第二种情况下,我的舞台上没有任何东西,所以我们应该这样做:

var holder3:clp_holder3 = new clp_holder3() // here we create a new instance of our clp_holder3 class and we name it as holder3
stage.addChild(holder3)                     // here we add it to our stage
// you can also do : addChild(holder3)

// and then the same code as the first case
holder3.holder2.holder1.i1.addEventListener(MouseEvent.CLICK, fl_ClickToGoToWebPage_5)
function fl_ClickToGoToWebPage_5(event:MouseEvent):void {
    trace('before navigateToURL')
    navigateToURL(new URLRequest('http://www.example.com'), '_blank')
    trace('after navigateToURL')
}

我希望这很清楚。