Ошибка № 1006: значение не является функцией - PullRequest
0 голосов
/ 30 сентября 2010

//Create the URLLOader instance var myLoader:URLLoader = new URLLoader();</p> <pre>//the data will come as URL-encoded variables myLoader.dataFormat = URLLoaderDataFormat.VARIABLES //Load using an URLRequest, even beeing local myLoader.load(new URLRequest("flash/index.php")) //onLoad handler listener myLoader.addEventListener(Event.COMPLETE, onDataLoad) //add a listener for the complete event function onDataLoad(evt:Event){ for(var i:uint=0; i<evt.target.data.cant; i++){ var mc_holder:MovieClip = new MovieClip(); mc_holder.name = "mc_holder"+i; mc_holder.x = 30; mc_holder.y = mc_holder.height+10; //trace(mc_holder.y = mc_holder.height*i) addChild(mc_holder); var loader:Loader = new Loader() loader.load(new URLRequest(evt.target.data["Image"+i])) mc_holder.addChild(loader) mc_holder.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); function mouseDownHandler(e:MouseEvent):void { var my_thumb = e.target.name; trace(my_thumb); my_thumb.startDrag(); }

Это дает мне ошибку Ошибка # 1006: значение не является функцией.когда я нажимаю на перетащить

Ответы [ 2 ]

0 голосов
/ 30 сентября 2010

В вашем коде много ошибок. Вы также пытаетесь сделать слишком много одним единственным методом. Вы анализируете свои данные, создаете фрагмент ролика, добавляете загрузчик, загружаете изображение, затем вызываете функцию в загрузчике ... Я пытался избавиться от очевидных ошибок, но нет никаких сомнений в том, что ваш код может быть улучшен путем разделения беспокойство.

Если вы разделите ваш код на отдельные методы, ваш код будет более гибким и намного проще для отладки ... Вы можете загружать и анализировать переменные, в другой функции подготовить ваши XML-данные для ваших проектов, а затем оставить отображение логика к другому методу.

А пока вот ваш код с меньшим количеством ошибок

    function onDataLoad(evt:Event)
    {

        for(var i:uint=0; i< evt.target.data.cant; i++)
        {
            var mc_holder:MovieClip = new MovieClip();
            mc_holder.name = "mc_holder"+i;
            mc_holder.x = 30;
            mc_holder.y = mc_holder.height+10;

             //trace(mc_holder.y = mc_holder.height*i);
            addChild(mc_holder);

            var loader:Loader = new Loader();

            loader.load(new URLRequest(evt.target.data["Image"+i]));

            mc_holder.addChild(loader)
            mc_holder.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);

        }
    }

    function mouseDownHandler(e:MouseEvent):void 
    {
        var my_thumb:MovieClip = e.target as MovieClip;
        trace(my_thumb);
        my_thumb.startDrag();

    }  
0 голосов
/ 30 сентября 2010

В опубликованном вами коде, похоже, есть синтаксические ошибки, но я думаю, что решением вашей проблемы должен быть вызов e.target.startDrag();.При вызове my_thumb.startDrag(); вы пытаетесь вызвать функцию startDrag для e.target.name, которая не существует.

В качестве альтернативы вы можете заменить

var my_thumb = e.target.name;

на

var my_thumb = e.target;
...