Arrays flash as3-在对象内声明null属性,或在对象声明内运行函数
我有一个对象,它被分配了许多属性:Arrays flash as3-在对象内声明null属性,或在对象声明内运行函数,arrays,flash,actionscript-3,function,object,Arrays,Flash,Actionscript 3,Function,Object,我有一个对象,它被分配了许多属性: var project_array:Array = []; var slideObject:Object = { project_title : myXML.projects.project[i].title.toUpperCase(), project_desc : myXML.projects.project[i].description.toUpperCase(), project_
var project_array:Array = [];
var slideObject:Object = {
project_title : myXML.projects.project[i].title.toUpperCase(),
project_desc : myXML.projects.project[i].description.toUpperCase(),
project_name : myXML.projects.project[i].name.toUpperCase(),
project_agency : myXML.projects.project[i].agency.toUpperCase(),
project_img : myXML.projects.project[i].@img,
project_types : myXML.projects.project[i].@type.split(", ")
}
project_array.push(slideObject);
我想做的是,根据slideObject.project_类型中的值,在slideObject中创建另一个数组来跟踪project_片段,如下所示:
for ( var i in project_types_array) {
/*(var typeClass:Class = getDefinitionByName('type_' + project_types_array[i]);
(var typeClip:typeClass = new typeClass();
project_clips_array.push(typeClip);
trace (project_types_array[i]);*/
switch (project_types_array[i]){
case "p":
var clip_p = new type_p();
project_clips_array.push(clip_p);
break;
case "exp":
var clip_exp = new type_exp();
project_clips_array.push(clip_exp);
break;
case "f":
var clip_f = new type_f();
project_clips_array.push(clip_f);
break;
case "oi":
var clip_oi = new type_oi();
project_clips_array.push(clip_oi);
break;
case "tv":
var clip_tv = new type_tv();
project_clips_array.push(clip_tv);
break;
}
}
for (var i=0;i<tp;i++){
var slideObject:Object = {
project_title : myXML.projects.project[i].title.toUpperCase(),
project_desc : myXML.projects.project[i].description.toUpperCase(),
project_name : myXML.projects.project[i].name.toUpperCase(),
project_agency : myXML.projects.project[i].agency.toUpperCase(),
project_img : myXML.projects.project[i].@img,
project_types : myXML.projects.project[i].@type.split(", "),
project_type_clips : [],
}
for (var j in slideObject.project_types){
//trace ("object" + i + " | type " + j)
switch (slideObject.project_types[j]){
case "p":
var clip_p = new type_p();
slideObject.project_type_clips.push(clip_p);
break;
case "exp":
var clip_exp = new type_exp();
slideObject.project_type_clips.push(clip_exp);
break;
case "f":
var clip_f = new type_f();
slideObject.project_type_clips.push(clip_f);
break;
case "oi":
var clip_oi = new type_oi();
slideObject.project_type_clips.push(clip_oi);
break;
case "tv":
var clip_tv = new type_tv();
slideObject.project_type_clips.push(clip_tv);
break;
}
} //end project_types loop
project_array.push(slideObject);
} // end object creation loop
loadProject();
}
但我不太确定把这个放在哪里。如果我把它放在对象构造函数之外,我会得到“term is undefined”,我猜是因为它不知道project\u clips\u array是什么-但是如果我在构造函数中声明project\u clips\u array,它似乎需要定义,即我无法创建空白属性。但是我也不能把它放在构造函数中,因为它似乎不允许我在对象构造函数中运行函数。执行此函数以获取对象中的数组时,正确的语法或代码安排是什么?我认为类似的方法应该可以工作:
var project_array:Array = [];
var slideObject:Object = {
project_title : myXML.projects.project[i].title.toUpperCase(),
project_desc : myXML.projects.project[i].description.toUpperCase(),
project_name : myXML.projects.project[i].name.toUpperCase(),
project_agency : myXML.projects.project[i].agency.toUpperCase(),
project_img : myXML.projects.project[i].@img,
project_types : myXML.projects.project[i].@type.split(", ")
}
slideObject.project_type_array = sortTypes(slideObject.project_types);
project_array.push(slideObject);
function sortTypes(orig_array:Array):Array
{
var type_array:Array = [];
for ( var i in orig_array)
{
switch (orig_array[i])
{
case "p":
var clip_p = new type_p();
type_array.push(clip_p);
break;
case "exp":
var clip_exp = new type_exp();
type_array.push(clip_exp);
break;
case "f":
var clip_f = new type_f();
type_array.push(clip_f);
break;
case "oi":
var clip_oi = new type_oi();
new_array.push(clip_oi);
break;
case "tv":
var clip_tv = new type_tv();
type_array.push(clip_tv);
break;
}
}
return type_array;
}
我是这样设置的:
for ( var i in project_types_array) {
/*(var typeClass:Class = getDefinitionByName('type_' + project_types_array[i]);
(var typeClip:typeClass = new typeClass();
project_clips_array.push(typeClip);
trace (project_types_array[i]);*/
switch (project_types_array[i]){
case "p":
var clip_p = new type_p();
project_clips_array.push(clip_p);
break;
case "exp":
var clip_exp = new type_exp();
project_clips_array.push(clip_exp);
break;
case "f":
var clip_f = new type_f();
project_clips_array.push(clip_f);
break;
case "oi":
var clip_oi = new type_oi();
project_clips_array.push(clip_oi);
break;
case "tv":
var clip_tv = new type_tv();
project_clips_array.push(clip_tv);
break;
}
}
for (var i=0;i<tp;i++){
var slideObject:Object = {
project_title : myXML.projects.project[i].title.toUpperCase(),
project_desc : myXML.projects.project[i].description.toUpperCase(),
project_name : myXML.projects.project[i].name.toUpperCase(),
project_agency : myXML.projects.project[i].agency.toUpperCase(),
project_img : myXML.projects.project[i].@img,
project_types : myXML.projects.project[i].@type.split(", "),
project_type_clips : [],
}
for (var j in slideObject.project_types){
//trace ("object" + i + " | type " + j)
switch (slideObject.project_types[j]){
case "p":
var clip_p = new type_p();
slideObject.project_type_clips.push(clip_p);
break;
case "exp":
var clip_exp = new type_exp();
slideObject.project_type_clips.push(clip_exp);
break;
case "f":
var clip_f = new type_f();
slideObject.project_type_clips.push(clip_f);
break;
case "oi":
var clip_oi = new type_oi();
slideObject.project_type_clips.push(clip_oi);
break;
case "tv":
var clip_tv = new type_tv();
slideObject.project_type_clips.push(clip_tv);
break;
}
} //end project_types loop
project_array.push(slideObject);
} // end object creation loop
loadProject();
}
for(var i=0;我能添加一个示例来说明你想要做什么吗?什么是项目类型?数组我看不到它在任何地方都初始化了?很好。如果你说这是解决方案,我想你可以接受你自己的答案。我想你会因此得到一个徽章或其他东西。:)