Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript HTML5制作CC动画中的随机mc_Javascript_Html_Adobe - Fatal编程技术网

使用javascript HTML5制作CC动画中的随机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

在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 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”

有什么想法吗?:)

因此,我有两点需要澄清:

  • 这是因为我们不使用
    这个
    关键字作为某个对象的属性。我们在对象的方法中使用它作为对它的引用

    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
    
    但是您可以有一个名为this的属性:

    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]();