Как правильно передать массив в класс - PullRequest
1 голос
/ 11 октября 2011

Привет, я пытаюсь передать мой Арри в класс.Я пытаюсь передать его, и это выглядит так:

Кадр 32 ранее, некоторые анимации.

    import flash.events.MouseEvent;
import fl.transitions.Tween;
import flash.display.MovieClip;
import Wyjazd;

stop();

ofertaBTN.addEventListener(MouseEvent.CLICK, wyskok);
function wyskok(e:MouseEvent)
{
    var vektor:Array = new Array(I,II,III,IV,V,VI,VII,VIII,IX,X,XI,XII);
    var menu:Wyjazd = new Wyjazd(vektor);
}

Класс

    package 
{
    import fl.transitions.Tween;
    import fl.motion.easing.*;
    import flash.filters.*;
    import flash.events.MouseEvent;
    import flash.display.Stage;
    import flash.display.MovieClip;

    public class Wyjazd extends MovieClip
    {

        public function Wyjazd(ar:Array)
        {
            var xX = ar.x;
            var time:Number = 2;
            var offset:Number = 0;
            for (var i:Number = 0; i < 12; i++)
            {
                var tween:Tween = new Tween(ar[i],"x",Sine.easeOut,ar[i].x,266.65 + offset,time,true);
                ar[i].addEventListener(MouseEvent.MOUSE_OVER,podswietlenie);
                ar[i].addEventListener(MouseEvent.MOUSE_OUT,zgaszenie);

                time +=  0.2;
                offset +=  15.25;
            }
            function zgaszenie(e:MouseEvent)
            {
                ar[i].filters = [];
            }
            function podswietlenie(e:MouseEvent)
            {
                var pods:GlowFilter = new GlowFilter  ;
                pods.inner = false;
                pods.color = 0x000000;
                pods.knockout = false;
                ar[i].filters = [pods];
            }
            /*var targetLabel:String;
            ar.addEventListener(MouseEvent.MOUSE_OVER, podswietlenie);
            ar.addEventListener(MouseEvent.MOUSE_OUT, zgaszenie);

            ar.addEventListener(MouseEvent.CLICK,przejscie);
            function przejscie(e:MouseEvent)
            {
            targetLabel= e.currentTarget.name;
            tween = new Tween(ar,"x",Sine.easeOut,ar.x,xX,time,true);
            trace(targetLabel);
            }*/

        }

    }
}

Но я все еще получаю ошибку # 1063.Это говорит о том, что я не передаю никаких аргументов.Как пройти это правильно?Не могли бы вы мне помочь?

ОБНОВЛЕНИЕ № 1: Я использую попробуй использовать трассировку.Код кадра не случайность, но класс выглядит следующим образом.

package 
{
    import fl.transitions.Tween;
    import fl.motion.easing.*;
    import flash.filters.*;
    import flash.events.MouseEvent;
    import flash.display.Stage;
    import flash.display.MovieClip;

    public class Wyjazd extends MovieClip
    {

        public function Wyjazd(ar:Array)
        {
            trace(ar.length);
            //reast is commented

        }

    }
}

Но, тем не менее, у меня ошибка # 1063, мы должны пойти глубже.Затем я изменяю код фрейма:

import flash.events.MouseEvent;
import fl.transitions.Tween;
import flash.display.MovieClip;
stop();
ofertaBTN.addEventListener(MouseEvent.CLICK, wyskok);
function wyskok(e:MouseEvent)
{
    var vektor:Array = [I,II,III,IV,V,VI,VII,VIII,IX,X,XI,XII];
    trace(vektor.lenght);
    //var menu:Wyjazd = new Wyjazd(vektor);
}

Теперь я получил ошибку # 1007 Попытка создания экземпляра для не-конструктора.at site_fla :: MainTimeline / wyskok ()

Ответы [ 4 ]

1 голос
/ 11 октября 2011

Похоже, вы хотели заключить в кавычки каждое из значений в массиве:

new Array('I','II','III','IV','V','VI','VII','VIII','IX','X','XI','XII');
0 голосов
/ 11 октября 2011

У вас не может быть параметра для символа, который является экземпляром из IDE, проверьте этот похожий вопрос и ответ: AS3 не принимает конструктор

Вы должны попытаться инициализировать свой класс по-разному, но это действительно зависит от вашего использования

например:

public class Wyjazd extends MovieClip
{

    public function Wyjazd(ar:Array=null) // use a default parameter
    {
        if (ar!=null) init(ar) // call your init function

    }
    public function init(ar:Array):void {
        var xX = ar.x;
        var time:Number = 2;
        var offset:Number = 0;
        for (var i:Number = 0; i < 12; i++)
        {
            var tween:Tween = new Tween(ar[i],"x",Sine.easeOut,ar[i].x,266.65 + offset,time,true);
            ar[i].addEventListener(MouseEvent.MOUSE_OVER,podswietlenie);
            ar[i].addEventListener(MouseEvent.MOUSE_OUT,zgaszenie);

            time +=  0.2;
            offset +=  15.25;
        }
        function zgaszenie(e:MouseEvent)
        {
            ar[i].filters = [];
        }
        function podswietlenie(e:MouseEvent)
        {
            var pods:GlowFilter = new GlowFilter  ;
            pods.inner = false;
            pods.color = 0x000000;
            pods.knockout = false;
            ar[i].filters = [pods];
        }
        /*var targetLabel:String;
        ar.addEventListener(MouseEvent.MOUSE_OVER, podswietlenie);
        ar.addEventListener(MouseEvent.MOUSE_OUT, zgaszenie);

        ar.addEventListener(MouseEvent.CLICK,przejscie);
        function przejscie(e:MouseEvent)
        {
        targetLabel= e.currentTarget.name;
        tween = new Tween(ar,"x",Sine.easeOut,ar.x,xX,time,true);
        trace(targetLabel);
        }*/
    }
}

}

0 голосов
/ 11 октября 2011

Попробуйте это:

var vektor:Array = [I,II,III,IV,V,VI,VII,VIII,IX,X,XI,XII];

Кроме того, я думаю, что эта строка не верна:

var xX = ar.x;

.. и кстати, вы тоже можете это изменить

// for (var i:Number = 0; i < 12; i++)
for (var i:int = 0; i < ar.length; i++)
0 голосов
/ 11 октября 2011

Чтобы сузить его, я бы предложил закомментировать ваш код функции Wyjazd и заменить его оператором trace, таким как trace (ar.length);

Посмотрите, сможете ли вы это запустить и проследит ли он длину массива.Если это возможно, то проблема не в передаче массива в функцию.

Я смог проверить это, и это сработало для меня, когда я его создал, поэтому я предлагаю выше.

Если он по-прежнему выдает ту же ошибку, то можете ли вы предоставить мне немного больше информации?

  1. Используете ли вы Flash Professional?
  2. Вы вызываете var vektorиз кадра 1 на вкладке действий?
  3. Вы вызываете класс Wyjazd из основного документа каким-либо другим способом (например, добавляете класс в свойства .fla?
...