我正在尝试为我的网站创建一个滚动缩略图导航栏,我无法添加我的按钮(图像)的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
但它也不起作用。
答案 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_holder3
,clp_holder2
,clp_holder1
和clp_img
(例如),当您要使用实例时应该使用其他名称,例如holder3
,holder2
,..
提示 要重命名课程,请转到您的媒体库,双击该项目的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')
}
我希望这很清楚。