错误 #1034 flash/animate cc as3
Error #1034 flash/animate cc as3
所以我正在整理一个学校项目,刚开始时,我正在使用 as3 在 flash cc 中进行测验。但是当我编译我的代码时,我只得到错误:TypeError: Error #1034: Type Coercion failed: cannot convert spr4$ to flash.display.MovieClip。
现在我知道有人问了这个问题,但我没有找到适用于我的简单代码的任何答案:
import flash.display.MovieClip;
import flash.events.MouseEvent;
stop();
var sprArray:Array = new Array();
sprArray[0] = [spr1, alt01, alt02, alt03];
sprArray[1] = [spr2, alt11, alt12, alt13];
sprArray[2] = [spr3, alt21, alt22, alt23];
sprArray[3] = [spr4, alt31, alt32, alt33];
btnNeste.addEventListener(MouseEvent.CLICK, neste);
function neste (evt:MouseEvent){
var randomSpr = Math.floor(Math.random()*4);
var spørsmål:MovieClip = sprArray[randomSpr][0];
spørsmål.x = 30;
spørsmål.width = 150;
spørsmål.height = 100;
var svaralt1:MovieClip = sprArray[randomSpr][1];
svaralt1.x = 30;
svaralt1.y = 50;
svaralt1.width = 100;
svaralt1.height = 100;
var svaralt2:MovieClip = sprArray[randomSpr][2];
svaralt1.x = 60;
svaralt1.y = 50;
svaralt1.width = 100;
svaralt1.height = 100;
var svaralt3:MovieClip = sprArray[randomSpr][3];
svaralt1.x = 90;
svaralt1.y = 50;
svaralt1.width = 100;
svaralt1.height = 100;
}
您的问题与 类 和实例的性质有关。
在您的图书馆中,如果您选中了 "export for actionscript" 框并为该图书馆对象指定了一个 class 名称(假设您为一个 class 名称指定了 spr1
) 然后在您的代码中,spr1
指的是 class (不是实例)。
如果你想要一个实例,你需要从class实例化它。因此,在您的情况下,要获得 spr1
的新实例,您可以这样做:
new spr1();
因此,将其放入您的示例的上下文中:
//sprArray[x] refers to classes, so you need use the 'new' keyword to create new instance of that class
var spørsmål:MovieClip = new sprArray[randomSpr][0]();
现在,如果您想真正看到新创建的显示对象,您必须使用 addChild 或 addChildAt 方法为其指定一个父对象:
addChild(spørsmål); //adds it to `this` (whatever display object this code is attached to) on top of everything else in `this`
Here is a question 有关于 classes 和实例之间差异的答案,如果您想了解更多。
所以我正在整理一个学校项目,刚开始时,我正在使用 as3 在 flash cc 中进行测验。但是当我编译我的代码时,我只得到错误:TypeError: Error #1034: Type Coercion failed: cannot convert spr4$ to flash.display.MovieClip。 现在我知道有人问了这个问题,但我没有找到适用于我的简单代码的任何答案:
import flash.display.MovieClip;
import flash.events.MouseEvent;
stop();
var sprArray:Array = new Array();
sprArray[0] = [spr1, alt01, alt02, alt03];
sprArray[1] = [spr2, alt11, alt12, alt13];
sprArray[2] = [spr3, alt21, alt22, alt23];
sprArray[3] = [spr4, alt31, alt32, alt33];
btnNeste.addEventListener(MouseEvent.CLICK, neste);
function neste (evt:MouseEvent){
var randomSpr = Math.floor(Math.random()*4);
var spørsmål:MovieClip = sprArray[randomSpr][0];
spørsmål.x = 30;
spørsmål.width = 150;
spørsmål.height = 100;
var svaralt1:MovieClip = sprArray[randomSpr][1];
svaralt1.x = 30;
svaralt1.y = 50;
svaralt1.width = 100;
svaralt1.height = 100;
var svaralt2:MovieClip = sprArray[randomSpr][2];
svaralt1.x = 60;
svaralt1.y = 50;
svaralt1.width = 100;
svaralt1.height = 100;
var svaralt3:MovieClip = sprArray[randomSpr][3];
svaralt1.x = 90;
svaralt1.y = 50;
svaralt1.width = 100;
svaralt1.height = 100;
}
您的问题与 类 和实例的性质有关。
在您的图书馆中,如果您选中了 "export for actionscript" 框并为该图书馆对象指定了一个 class 名称(假设您为一个 class 名称指定了 spr1
) 然后在您的代码中,spr1
指的是 class (不是实例)。
如果你想要一个实例,你需要从class实例化它。因此,在您的情况下,要获得 spr1
的新实例,您可以这样做:
new spr1();
因此,将其放入您的示例的上下文中:
//sprArray[x] refers to classes, so you need use the 'new' keyword to create new instance of that class
var spørsmål:MovieClip = new sprArray[randomSpr][0]();
现在,如果您想真正看到新创建的显示对象,您必须使用 addChild 或 addChildAt 方法为其指定一个父对象:
addChild(spørsmål); //adds it to `this` (whatever display object this code is attached to) on top of everything else in `this`
Here is a question 有关于 classes 和实例之间差异的答案,如果您想了解更多。