使用javascript HTML5制作CC动画中的随机mc
在Animate CC Canvas项目中,我在库中有几个mc具有以下链接名称:使用javascript HTML5制作CC动画中的随机mc,javascript,html,adobe,Javascript,Html,Adobe,在Animate CC Canvas项目中,我在库中有几个mc具有以下链接名称:card1,card2,card3。。。并希望使用Javascript/HTML5代码将随机mc放到舞台上 var container, c, card; // basic stuff function init() { c = createjs; container = new c.Container(); stage.addChild(container); var m = 1; // a r
card1
,card2
,card3
。。。并希望使用Javascript/HTML5代码将随机mc放到舞台上
var container, c, card; // basic stuff
function init() {
c = createjs;
container = new c.Container();
stage.addChild(container);
var m = 1; // a random number
card = new lib.this["card" + m](); // GIVES ERROR. This is AS3 style.
//card = new lib.card1(); // WORKS FINE!
container.addChild(card);
card.x = 800;
card.y = 250;
}
我得到一个错误:
未捕获的TypeError:无法读取未定义的属性“card1”
有什么想法吗?:)
因此,我有两点需要澄清:
- 这是因为我们不使用
关键字作为某个对象的属性。我们在对象的方法中使用它作为对它的引用这个
但是您可以有一个名为this的属性:var foo = { x: 1, y: 2 }; console.log(foo.this); // → undefined console.log(foo.this["x"]); // → Type Error var bar = { x: 1, y: 2, showX: function () { return this["x"] } } console.log(bar.showX()); // → 1
var foo { this: 1, that: 2 } console.log(foo.this); // → 1
- 您可以使用
表示法或
表示法访问对象的属性(无需[]
),如下所示:此
card = new lib["card" + m]();
下面是一个使用div的示例。我试着按照你的代码保持相似。
lib
对象有4个构造函数card1
到card4
作为属性,每个构造函数生成具有特定颜色的卡片
const createjs={
容器:函数(){
this.elt=document.createElement(“div”);
这个.elt.classList.add(“容器”);
}
},
卡=功能(){
this.elt=document.createElement(“span”);
此.elt.classList.add(“卡片”);
},
lib={
card1:函数(){
this.elt=新卡().elt;
this.elt.style.background=“浅蓝色”;
},
卡片2:功能(){
this.elt=新卡().elt;
this.elt.style.background=“gold”;
},
卡片3:功能(){
this.elt=新卡().elt;
this.elt.style.background=“浅绿色”;
},
卡片4:功能(){
this.elt=新卡().elt;
this.elt.style.background=“#f76”;
}
};
函数init(){
让container=new createjs.container().elt;
阶段。附加子对象(容器);
for(设m=1;m<5;m++){
let card=new lib[“card”+m]().elt;
card.style.width=80+“px”;
card.style.height=100+“px”;
容器.附件(卡片);
}
}
init()代码>
#阶段{
背景:#e85;
高度:500px;
填充:1px;
}
.集装箱{
利润率:60像素;
背景:#fff3;
}
.卡片{
显示:内联块;
边界半径:10px;
宽度:80px;
高度:100px;
边缘:1米;
}
您的库
是否有此
属性?如果是,是什么?什么是容器
?什么是addChild
?可能您指的是appendChild
?你真的没有提供足够的代码。如果我认为太多是理所当然的,那么很抱歉。我已经更新了代码。我是一个习惯于AS3的人你的库中剪辑的名称是什么?您正在尝试这样做:newlib[“card+m”]()
@Lexandrian是正确的,除非在您的lib中有一个这个
对象(我猜没有,除非您以某种方式注入它)。AS3和JS具有相同的括号访问代码,因此这取决于格式。如果你硬编码它会是什么样子<代码>新的lib.card1
还是什么?谢谢@Lanny!我想这是我唯一没有尝试的组合:lib和[.干杯!谢谢大家!谢谢@theAlexandrian.那个简单的点!XD
var foo = { x: 1, y: 2 };
console.log(foo.x); // → 1
console.log(foo["y"]); // → 2
card = new lib["card" + m]();