Произошла ошибка в Actionscript, который я пытаюсь вставить в мой файл Flash - PullRequest
1 голос
/ 27 марта 2012

Обычно я создаю эффект покачивающейся травы, и появляется эта ошибка, и я не совсем уверен, как ее исправить.

Сцена 1, уровень «Действия», кадр 1, строка 19 1180: вызов возможно неопределенного метода duplicateMovieClip.

Scene1-Actions frame 1:

 import flash.display.MovieClip;

function duplicate(name:MovieClip, amount:Number):void
{
    for(var i = 1; i<= amount; i++)
    {
        duplicateMovieClip(name, name+"_"+i, i);
    }


}
duplicate(grass_mc, 50);

Рамки с травами 1

onClipEvent(load)
{
    this.height= random(70)+5
    this.width = random(15)+5
    this._x = random(Stage.width);
    this.gotoAndPlay(random(20));

}

Ответы [ 2 ]

1 голос
/ 28 марта 2012

Так что в основном вам нужен хороший старый метод duplicateMovieClip из as2 в as3.Есть несколько способов достижения подобных результатов, но прежде всего я собираюсь предложить вам прочитать некоторые учебные пособия по Классам и Объектам и ООП вобщий для ActionScript3, например этот от kirupa .

Как только вы прочитаете, что должны быть более чем способны сделать трюк, но в любом случае, здесь есть пошаговое руководство, пытаясь упростить вещи:

Перейдите в свою библиотеку , щелкните правой кнопкой мыши по траве Символ , выберите Свойства и отметьте Export for ActionScript и Export in frame 1.Напишите Grass как Имя класса , оставьте Базовый класс как есть (он скажет flash.display.MovieClip . Вы получите приглашениеговоря, что класс не может быть найден, пока все в порядке. Делайте это каждый раз, когда создаете объект Grass со строкой var my_mc:MovieClip = new Grass(); и вы addChild выводите его на сцену (или в любой видеоклип, который уже находится наstage) вы создаете «копию» оригинального мувиклипа Grass.

Так, например, этот код создаст 50 экземпляров мувиклипа Grass:

import flash.display.MovieClip;

createGrass(50);

function createGrass(amount:uint):void
{
    var grass_mc:MovieClip;
    for(var i:uint = 1; i<= amount; i++)
    {
        grass_mc = new Grass();
        grass_mc.name = "grass_mc"+i;

        initGrass(grass_mc);
        addChildAt(grass_mc,i);
    }

}

//grass-Action Frames 1
function initGrass(mc:MovieClip):void
{
    mc.height= Math.random()*70+5;
    mc.width = Math.random()*15+5;
    mc.x = Math.random()*stage.width;
    mc.gotoAndPlay(Math.ceil(Math.random()*20));

}

Также кодвы пометили Grass-Action Frames 1 все в as2, я преобразовал его в as3 и записал его как функцию в вашу временную шкалу для чистоты, поэтому вам нужно будет удалить его изнутри травяной клип.

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

0 голосов
/ 27 марта 2012

Метод duplicateMovieClip взят из ActionScript2, и теперь он не поддерживается в ActionScript 3.

Вы больше не можете «дублировать» видеоклип, но есть несколько способов добиться того же результата. Если вы не уверены в создании нового класса, который будет создавать несколько экземпляров вашего объекта, взгляните на эту ссылку , это должно помочь объяснить процесс.

...