AS3 кинотеатрларына динамикалық жасау және атау беру

Сыртқы айнымалы мәнге сүйене отырып, динамикалық түрде көшірілуім керектігін көрсететін мейнжибекам бар. мысалы, клип1, клип2 және т.б. Бұл ауыспалы өзгереді, сондықтан ол орын алған кездегі қателерді кодтау мүмкін емес.

Модельді бірнеше рет динамикалық түрде жасау және оны экранға сәйкес келтіру әдісі бар ма?

Googleде ештеңе таба алмадым.

Құрметпен Лубен

2

3 жауаптар

DisplayObject көшірмесін жасайтын функцияны қалай пайдалануға болады. Бұл функция берілетін нысанның жаңа данасын қайтарады:

function duplicateDisplayObject( dspObj:DisplayObject ):DisplayObject 
{
    var class_name:String = getQualifiedClassName( dspObj );
    var definition:Class = getDefinitionByName( class_name ) as Class;
    return new definition() as DisplayObject;
}

(MovieClip, Sprite және Bitmap барлық DisplayObject-тан мұраланған)

Өңдеу:

Егер сізге оны MovieClips арқылы пайдалану қажет болса, жай ғана:

var myDuplicate:MovieClip = duplicateDisplayObject( myOriginalMovieClip ) as MovieClip;
2
қосылды
Джулианға ризашылығымды білдіргім келеді - егер мен DisplayObject қолдансам, мен .gotoAndPlay() қолдана алмаймын. Оны MovieClip-ге ауыстыру проблемаларды шешеді.
қосылды автор Luben, көзі
Жоғарыда аталған функция басқа MovieClips ішіндегі MovieClips үшін жұмыс істемейтінін ескеріңіз. Мұндай объектілердің көшірмесін жасау туралы кез-келген идеялар?
қосылды автор Luben, көзі
Бұл дұрыс, бірақ duplicateDisplayObject функциясын өзгертудің қажеті жоқ. Тек оны пайдаланған кезде қайтару мәнін шығарыңыз. Жоғарыдағы мысалды қараңыз.
қосылды автор JulianG, көзі
var clip:YourClip;

for(var i:uint=0;i<5;i++)
{
     clip = new YourClip();
     addChild(clip);
     clip.x = 20 + clip.width * i * 1.2;
     clip.y = 20;
}
1
қосылды

Сіз тек қана клип үлгісін қайталай аласыз. Сіз басқа класс данасын жасай аласыз, содан кейін оның орнын реттей аласыз.

var clip1:MyClip = new MyClip();

var copies:int = 10;

for(var i:int = 0, i < copies; i++) {
    var clone:MyClip = new MyClip();
    clone.name = 'clip' + i
    clone.x = ....;
    clone.y = ....;
}
0
қосылды