2013-05-18 6 views
-1

Просьба помочь мне обновить этот код до AS3, это в AS2. Я изучаю ActionScript, поэтому для меня все еще монстр ... Пожалуйста, будьте спокойны.Изучение корабля

stop(); 
particles_mc.duplicateMovieClip.visible = false; 
trace ("undefined term") 
var i:Number = 0; var 
total:Number = 100; 
for (; i < total; i++) 

{ 

particles_mc.duplicateMovieClip. ("particles_ 
mc"+i,i); 
this["particles_mc"+i]._rotation = Math.floor. 
(Math.random() * 360); 
this["particles_mc"+i].gotoAndPlay (Math.random 
() * particles_mc.MovieClip.totalFrames)); 

} 

Help Stack!

ответ

1

Это выглядит довольно хорошо. Есть несколько методов, которые больше не могут использоваться (в основном к лучшему) в AS3. Я объясню это ниже.


duplicateMovieClip осуждается в AS3. В AS3 нет простого «дублирующего» метода, но там есть несколько способов сделать несколько копий мувиклипа (mc).

4as, блог, посвященный Flash-программированию, дает действительно хорошие примеры/учебники для реализации нескольких этих методов, но мой любимый (и я считаю, самый простой) заключается в том, чтобы просто создать пользовательский класс из mc you будут использоваться не один раз («дублирование»).

Начните с перехода в mc в своей библиотеке и щелкните правой кнопкой мыши, чтобы открыть параметр свойств. Когда откроется окно свойств Symbol, установите флажок «Экспорт для ActionScript» и запомните текст, который находится в текстовом поле «Класс». * Если вы не видите эти параметры в окне свойств Symbol, убедитесь, что ваши расширенные параметры видны.

Теперь, когда вы создали класс для МЦ, в вашем коде вы можете легко создать дубликат MC, когда вы хотите, написав:

//this creates a new movieclip called mc that is a 
//duplicate of the movieclip class you created. 
    //replace className with the text from the "Class" 
    //textbox in the symbol properties window 
var mc:MovieClip = new className(); 

Для того, чтобы поставить этот дублированный тс на этап, вызовите addChild() или addChildAt() метод:

//adds a movieclip to the stage 
addChild(mc); 
//adds a movieclip to the stage at a certain depth 
addChildAt(mc,0); 

_rotation больше не используется в AS3. Вместо этого используйте rotation без подчеркивания.

//rotate movieclip by a certain amount 
mc.rotation=180; 

totalFrames на самом деле технически AS3 (_totalFrames в AS2). Однако, как вы его назвали, это было неправильно. Вместо того, чтобы говорить mc.MovieClip.totalFrames, который запрашивает общее количество кадров из мувиклипа под названием MovieClip внутри мувиклипа под названием mc, вам просто нужно сказать mc.totalFrames. Это запрашивает общее количество кадров внутри мувиклипа mc, которое в этом случае является тем, что мы хотим.


Вот ваш код переписан в as3, принимая эти изменения во внимание (и с небольшим количеством поправок на забытую скобку и странное расстояние):

//create the invisible starting mc **Not actually necessary** 
/* 
var start_mc:MovieClip = new part(); 
addChild(start_mc).visible = false; 
*/ 
//initialize i 
var i:Number = 0; 
//initialize total 
var total:Number = 100; 
//loop i to total 
for(;i<total;i++){ 
    //Create a new mc 
    var mc:MovieClip = new part(); 
    //Add that mc to the stage and name it "mc" followed by the number "i" 
    addChildAt(mc,i).name="mc"+i; 
    //rotate mc random number of degrees 0-359 
    mc.rotation=(Math.floor(Math.random() * 360)); 
    //gotoAndPlay (do you really mean play?) random frame 
    mc.gotoAndPlay(Math.floor(Math.random()*mc.totalFrames)+1); 
} 

Вы можете заметить, что я не используя this["mc"+i], чтобы изменить мувиклип после его создания. В as3 вы можете ссылаться на вновь созданный мувиклип переменной, которую вы использовали для ее создания. В этом случае mc. Однако, если вы не доверяете этому методу или вам нужно изменить каждый из них отдельно, вы можете использовать метод getChildByName().

this.getChildByName("mc"+i).rotation=180; 

Надеюсь, это поможет!

редактировать:

Working example

Я добавил случайное масштабирование, чтобы сделать его красивее.

Попробуйте загрузить .fla, чтобы узнать, как структурированы код и мувиклипы.

+0

Я ценю это, большое спасибо. Я снова буду здесь, инфакт, это мой дом сейчас! Не уставайте от меня – Guyz

+0

Если это вам помогло, обязательно ответьте, нажав галочку слева. – Enigmadan

+0

Enigmadan, это очень помогло, спасибо. Моя маленькая проблема, хотя это частицы/звезды, которые я собираюсь, больше не рождаются, не излучают и не летают из символа источника mc, а вместо этого, mc, который я поддерживал внутри mc, перемещается вправо как единый объект. Как исправить это? – Guyz

Смежные вопросы