as3 - TypeError: Ошибка № 1009: невозможно получить доступ к свойству или методу ссылки на пустой объект - PullRequest
0 голосов
/ 28 февраля 2012

Я продублировал объект, чтобы использовать его в другом кадре (объект использует Greensock для прокрутки оси X, и я использовал функцию (onMove (evt: MouseEvent)), но когда я перемещаю свою мышь, это ошибка появляется во вкладке вывода TypeError: Error #1009: Cannot access a property or method of a null object reference. at Main_fla::mainContianer_1/onMove(), и когда я нажимаю одну из кнопок для ввода нового объекта, эта ошибка появляется TypeError: Error #1009: Cannot access a property or method of a null object reference. at com.greensock::TweenLite/init() at com.greensock::TweenLite/renderTime() at com.greensock.core::SimpleTimeline/renderTime() at com.greensock::TweenLite$/updateAll(), а старый объект появляется

вот действия моего старого

import com.greensock.TweenLite;
import com.greensock.easing.Back;
import com.greensock.easing.Elastic;
import com.greensock.plugins.TweenPlugin;
import com.greensock.plugins.BlurFilterPlugin;

var panelContainer:Sprite = new Sprite;
addChild(panelContainer);

for(var i:Number=0;i<3; i++) {

    var projectPanel:ProjectPanel = new ProjectPanel;
    projectPanel.x = i*(projectPanel.width+10);
    panelContainer.addChild(projectPanel);

    projectPanel.addEventListener(MouseEvent.CLICK, onClick);

}

function onClick(evt:MouseEvent):void {

    TweenLite.to(panelContainer, 0.5, {y:stage.stageHeight, ease:Back.easeIn});
    MovieClip(this.parent).addFullPanel(Number(evt.currentTarget.name));

}

function slideUp():void {

    TweenLite.to(panelContainer, 0.5, {y:0, ease:Back.easeOut});

}

stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove);

function onMove(evt:MouseEvent):void {

    if(MovieClip(this.parent).fullProjectPanelUp==false){
    TweenLite.to(panelContainer,0.3, {x:-        (stage.mouseX/1225)*panelContainer.width+stage.stageWidth/2.65});
    }

}

stop();

и действия нового:

import com.greensock.TweenLite;
import com.greensock.easing.Back;
import com.greensock.easing.Elastic;
import com.greensock.plugins.TweenPlugin;
import com.greensock.plugins.BlurFilterPlugin;

var lessonContainer:Sprite = new Sprite;
addChild(lessonContainer);

for(var p:Number=0;p<8; p++) {

    var lessonPanel:LessonPanel = new LessonPanel;
    lessonPanel.x = p*(lessonPanel.width+10);
    lessonContainer.addChild(lessonPanel);

    lessonPanel.addEventListener(MouseEvent.CLICK, onClick);

}

function onClickLesson(evt:MouseEvent):void {

    TweenLite.to(lessonContainer, 0.5, {y:stage.stageHeight, ease:Back.easeIn});
    MovieClip(this.parent).addfullLessonPanel(Number(evt.currentTarget.name));

}

function slideLessonUp():void {

    TweenLite.to(lessonContainer, 0.5, {y:0, ease:Back.easeOut});

}

stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove);

function onLessonMove(evt:MouseEvent):void {

    if(MovieClip(this.parent).fullLessonPanelUp==false){
    TweenLite.to(lessonContainer,0.3, {x:-(stage.mouseX/1225)*lessonContainer.width+stage.stageWidth/2.65});
    }

}

stop();

и вот Файлы проекта , если они вам нужны

1 Ответ

0 голосов
/ 28 февраля 2012

Если FrameLabelPlugin не был активирован, TweenLite будет действовать так, как будто вы пытаетесь буквально анимировать свойство mc.frameLabel (а такой вещи нет).

Для активации плагина требуется одна строкакод, и вам нужно только сделать это один раз в вашем приложении, так что это довольно легко.Просто передайте массив, содержащий имена всех плагинов, которые вы хотите активировать, в метод TweenPlugin.activate (), например:

import com.greensock.plugins.*;
TweenPlugin.activate([FrameLabelPlugin, ColorTransformPlugin]);
...