[AS3 / FLASH] Runtime error

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Voor mn eindexamen Major Atelier moet ik een applicatie maken ivm het brein.
Ik heb een brein op mijn stage staan die ik kan bewegen met mijn cursor.
Als ik klik komt er een bliksem die de vijanden van de hersenen bevriest.
Wanneer ik mijn eerste vijand verwijderd heb van mn stage, krijg ik de hele tijd een runtime error:

TypeError: Error #2007: Parameter hitTestObject mag niet null zijn.
at flash.display::DisplayObject/_hitTest()
at flash.display::DisplayObject/hitTestObject()
at FrameEen/enterFrameHitTestHandler()

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
var joint:Joint;
var pillen:Pillen;
var spuit:Spuit;
var breezer:Breezer;
var bier:Bier;

function init7():void
{
    removeChild(brhText);
    
    //brainHero laten bewegen over scherm
    stage.addEventListener( MouseEvent.MOUSE_MOVE, mouseMoveHandler);
    //bliksems afschieten bij klik
    brainHero.addEventListener( MouseEvent.CLICK, mouseClickHandler);
    //joint over scherm laten gaan
    roken1LatenPasseren();
    //checken of er iets geraakt wordt.
    stage.addEventListener( Event.ENTER_FRAME, enterFrameHitTestHandler);
}


function mouseMoveHandler(evt:MouseEvent):void
{       
    if (mouseX > -150 && mouseX < stage.stageWidth - brainHero.width)
    {
        brainHero.x = mouseX;
    }
}

function mouseClickHandler(evt:MouseEvent):void
{
    //bliksems staat buiten stage =>
    bliksem.x = mouseX;
    bliksem.y = mouseY;
    
    var yTweenBliksem:Tween = new Tween (bliksem, "y", Regular.easeOut, bliksem.y, stage.stageHeight, 1, true);
}

function enterFrameHitTestHandler(evt:Event):void
{
    if(bliksem.hitTestObject(joint))
    {
        trace("iiieee");
        removeChild(joint);
        drugs1LatenPasseren();
    }
    
    if(bliksem.hitTestObject(pillen))
    {
        trace("iiieee");
        removeChild(pillen);
        drugs2LatenPasseren();
    }
    
    if(bliksem.hitTestObject(spuit))
    {
        trace("iiieee");
        removeChild(spuit);
        alcohol1LatenPasseren();
    }
    
    if(bliksem.hitTestObject(breezer))
    {
        trace("iiieee");
        removeChild(breezer);
        alcohol2LatenPasseren();
    }
    
    if(bliksem.hitTestObject(bier))
    {
        trace("iiieee");
        removeChild(bier);
    }
}

function roken1LatenPasseren():void
{
    joint = new Joint();
    joint.x = stage.stageWidth/2;
    joint.y = stage.stageHeight/2 + 150;
    addChild(joint);
}

function drugs1LatenPasseren():void
{
    pillen = new Pillen();
    pillen.x = stage.stageWidth/2;
    pillen.y = stage.stageHeight/2 + 300;
    addChild(pillen);
}

function drugs2LatenPasseren():void
{
    spuit = new Spuit;
    spuit.x = stage.stageWidth/2;
    spuit.y = stage.stageHeight/2 + 150;
    addChild(spuit);
}

function alcohol1LatenPasseren():void
{
    breezer = new Breezer;
    breezer.x = stage.stageWidth/2;
    breezer.y = stage.stageHeight/2 + 150;
    addChild(breezer);
}

function alcohol2LatenPasseren():void
{
    bier = new Bier;
    bier.x = stage.stageWidth/2;
    bier.y = stage.stageHeight/2 + 150;
    addChild(bier);
}

init7();


de fout zitten in die pillen, breezer, bier en spuit..
het zijn allemaal MovieClips in de library

Ik heb nooit iets gesnapt van die runtime errors met object mag niet null zijn.
Kan er mij iemand helpen, aub?

Acties:
  • 0 Henk 'm!

Verwijderd

Je hebt "pillen" nog niet aangemaakt en je doet al een hittest op pillen. Daarom krijg je een runtime error.

Je kan voor elke hittest dit doen:
code:
1
if(pillen && bliksem.hitTestObject(pillen))


Verder is je code niet echt flexibel. Je zou beter je klasse-referenties en object-referenties bijhouden in arrays en zo je code flink inkorten. Het zal dan ook veel makkelijker zijn om het volgende object of een willekeurig object tevoorschijn te "spawnen".