gpt4 book ai didi

flash - 帮助 - 使用 stage.addEventListener (ScrollBar) 时出现空对象错误

转载 作者:行者123 更新时间:2023-12-02 06:25:30 25 4
gpt4 key购买 nike

嘿伙计们,希望得到一些帮助 :( 现在已经坚持了几天。

我正在使用 Lee Brimelow's ScrollBar class 创建滚动条.我不得不修改它以在我的类文件中工作,并认为我在正确的轨道上,但我感到害怕:

错误 #1009:无法访问空对象引用的属性或方法错误。

当我运行调试时,它命中了我有 rollerUp) 的行;

滚动条类的代码:

import flash.display.*;
import flash.events.*;
import caurina.transitions.*;

public class ScrollBar extends MovieClip
{
private var yOffset:Number;
private var yMin:Number;
private var yMax:Number;
private var thumbsnailTab:MovieClip;
private var theRoller:MovieClip;

public function ScrollBar(myRoller:MovieClip, myTrack:MovieClip, thumbsnails:MovieClip):void
{
yMin = 0;
yMax = myTrack.height - myRoller.height;
theRoller = myRoller;
thumbsnailTab = thumbsnails;
myRoller.addEventListener(MouseEvent.MOUSE_DOWN, rollerDown);
stage.addEventListener(MouseEvent.MOUSE_UP, rollerUp);
}

这是我的调试显示的内容:

alt text

起初我不确定是 stage 引用导致错误还是 rollerUp 函数,但由于我注释掉了 stage.removeEventListener 并添加了一个基本的跟踪语句,它仍然会抛出一个错误,所以我相信它与以下内容有关:

stage.addEventListener(MouseEvent.MOUSE_UP, rollerUp);

现在我已经导入了事件。*;到 ScrollBar 类...也许问题出在我的主类中,我在其中为 ScrollBar 创建图形并将 ScrollBar 添加到显示列表?

主要类的代码:

// Creating Graphics
track1 = new Track;
track1.x = 0;
track1.y = 0;

roller1 = new Roller;
roller1.x = 0;
roller1.y = 0;

sc1 = new EmptyMov;
sc1.x = 764;
sc1.y = 470;

sc1.addChild(track1);
sc1.addChild(roller1);

// Adding ScrollBar to Stage
scroll1 = new ScrollBar(roller1, track1, tab1);
container.addChild(sc1);
container.addChild(scroll1);
addChild(container);

我被困在这里,不确定为什么会出现 Null 引用错误,也不确定我是否以正确的方式创建图形以及是否正确使用 ScrollBar 类 :( 任何提示表示赞赏!

alt text


更新代码工作! :D

public function ScrollBar(myRoller:MovieClip, myTrack:MovieClip, thumbsnails:MovieClip):void
{
yMin = 0;
yMax = myTrack.height - myRoller.height;
theRoller = myRoller;
thumbsnailTab = thumbsnails;
myRoller.addEventListener(MouseEvent.MOUSE_DOWN, rollerDown);
}

private function rollerDown(e:MouseEvent):void
{
stage.addEventListener(MouseEvent.MOUSE_UP, rollerUp);
stage.addEventListener(MouseEvent.MOUSE_MOVE, rollerMove);
yOffset = mouseY - theRoller.y;
}

alt text

最佳答案

你的舞台是空的,因为新创建的对象还没有在舞台上。要解决此问题,请在构造函数中使用 ADDED_TO_STAGE 监听器,然后添加您的阶段事件。

关于flash - 帮助 - 使用 stage.addEventListener (ScrollBar) 时出现空对象错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1532955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com