-
28-05-2012, 14:03 #1
flash puzzel die steeds fouten geeft
Beste
Ik moet voor een eindtaak voor school een flash projectje maken.
ik heb gekozen voor een puzzel maar nu krijg is steeds #1010 fouten in mijn handler die ervoor zorgt die mijn puzzelstukken vastclippen op een voorbeeld (resultaat)
iemand die mij kan/wil helpen?
met vriendelijke groeten
stijnWait whut?no votes
-
-
28-05-2012, 14:04 #2Member
- Registered
- 16/04/08
- Location
- Hong Kong
- Posts
- 1,989
- iTrader
- 6 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 7/9
Zonder wat code te geven zal niemand je echt kunnen helpen vrees.
Post eens de code waar het fout gaat, alsook de foutmelding.no votes
-
28-05-2012, 14:05 #3Code:
package { import flash.display.MovieClip; import flash.events.*; import com.greensock.TweenLite; import com.greensock.*; public class main extends MovieClip { private var xpos: int; private var ypos: int; private var aantalJuist: int=0; public function main() { // constructor code Landschap.MenuClip.addEventListener(MouseEvent.MOUSE_DOWN, navigatieHandler); Landschap.LosseStukkenClip.addEventListener(MouseEvent.MOUSE_DOWN, sleepStukHandler); Landschap.LosseStukkenClip.addEventListener(MouseEvent.MOUSE_UP, StopSleephandler); Landschap.ProficiatClip.visible = false; } public function sleepStukHandler(evt:MouseEvent){ var mc:MovieClip = evt.target as MovieClip; xpos= evt.target.x; ypos= evt.target.y; mc.parent.setChildIndex(mc, mc.parent.numChildren -1) evt.target.startDrag(); } public function StopSleephandler(evt:MouseEvent){ evt.target.stopDrag(); var juist:Boolean = false; //controleren of puzzelstuk juist ligt var sleepStuk:MovieClip = evt.target as MovieClip; for (var i:int = 0; i < Landschap.resultaatClip.numChildren; i++){ var mc:MovieClip = Landschap.resultaatClip.getChildAt(i) as MovieClip; if(Landschap.sleepStuk.name == mc.name && mc.hitarea.hitTestPoint(mouseX, mouseY)){ Landschap.sleepStuk.x = mc.x; Landschap.sleepStuk.y = mc.y; juist = true; aantalJuist ++; } } //evt.target.x=xpos; //evt.target.y=ypos; if(juist == false) TweenLite.to(evt.target, 1, {x:xpos, y:ypos}); if(aantalJuist == 4) Landschap.proficiatClip.visible = true; } public function navigatieHandler(evt:MouseEvent) { trace("menu item: " + evt.target.name); var xposSite:int = 0; switch(evt.target.name) { case "btnBos" : xposSite = +800; break; case "btnDieren" : xposSite = -860; break; case "btnTerug" : xposSite = -40; break; } if(xposSite != 0){ TweenLite.to(Landschap, 1, {x:xposSite}); } } } }
foutcode is:
TypeError: Error #1010: Een term is ongedefinieerd en heeft geen eigenschappen.
at main/StopSleephandler()Last edited by _rusty_; 28-05-2012 at 14:11.
Wait whut?no votes
-
28-05-2012, 14:09 #4Deactivated user
- Registered
- 14/08/10
- Location
- Diest
- Posts
- 2,419
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 8/16
Gebruik eens code tags.
no votes
-
28-05-2012, 15:12 #5Member
- Registered
- 06/06/04
- Location
- Bilzen
- Posts
- 8,805
- iTrader
- 18 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 42/128
En gebruik eens een Engelstalige debugger

Soit, error #101 is een null reference, dus ge verwijst ergens naar een object dat (nog) niet geïnitialiseerd is of simpelweg niet bestaat. Even zoeken naar welk object dat is dus.
Ik zou trouwens ook geen evt.target gebruiken in uw mouse_up handler, maar bij het starten van uw slepen het huidige object opslaan in een instance variable en die dan hergebruiken bij het stoppen.no votes
-
28-05-2012, 16:12 #6
Hoe bedoel je precies?
hoe zou ik dit kunnen oplossen?
Ik heb nog een ander probleem waar ik straks nog even op zal terug komenWait whut?no votes
-
28-05-2012, 16:40 #7Member
- Registered
- 19/02/06
- Location
- -
- Posts
- 4,048
- iTrader
- 1 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 2/73
Staat er nergens op welke regel die error optreedt?
En verder zou ik nog willen opmerken dat namen van classes over het algemeen beginnen met een hoofdletter en variabelen met een kleine letter.no votes
-
28-05-2012, 16:42 #8
Als ik ga debuggen dan geeft flash meestal de foutmelding in dit stukje code
voornamelijk in de if lus.
Code:public function StopSleephandler(evt:MouseEvent) { evt.target.stopDrag(); var juist:Boolean = false; //controleren of puzzelstuk juist ligt var sleepStuk:MovieClip = evt.target as MovieClip; for (var i:int = 0; i < Landschap.resultaatClip.numChildren; i++) { var mc:MovieClip = Landschap.resultaatClip.getChildAt(i) as MovieClip; if (Landschap.sleepStuk.name == mc.name && mc.hitarea.hitTestPoint(mouseX,mouseY)) { Landschap.sleepStuk.x = mc.x; Landschap.sleepStuk.y = mc.y; juist = true; aantalJuist++; } } //evt.target.x=xpos; //evt.target.y=ypos; if (juist == false) { TweenLite.to(evt.target, 1, {x:xPos, y:yPos}); } if (aantalJuist == 4) { Landschap.proficiatClip.visible = true; } }Wait whut?no votes
-
28-05-2012, 16:42 #9Member
- Registered
- 06/06/04
- Location
- Bilzen
- Posts
- 8,805
- iTrader
- 18 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 42/128
Ik bedoel dat ge uw objecten die ge aanspreekt in die functie eens moet tracen om te kijken of ze niet null zijn. Want daar crasht em op.
Pak bijvoorbeeld dat "evt.target" geen waarde heeft (wat afaik niet zou kunnen, maar soit, 't is maar een voorbeeld), dan heeft sleepStuk ook geen waarde en crasht em daarop. Hetzelfde met Landschap (zou een kleine letter moeten zijn eigenlijk) of mc of Landschap.proficiatClip of Landschap.proficiatClip. Dat zijn allemaal objecten die ge aanspreekt, die eventueel null kunnen zijn.
Dus trace(evt.target); bijvoorbeeld al eens om te kijken of het niet null is (en of het wel het juiste object is), en ga zo verder de lijst af. Of zet gewoon een breakpoint in uw code en dan kunt ge het sneller zien.no votes
-
28-05-2012, 17:09 #10Approved 9liver
- Registered
- 28/11/03
- Location
- Drongen
- Posts
- 6,665
- iTrader
- 5 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 6/28
Heeft flash geen debugger waarbij ge kunt volgen en zo kunt zien welk object NULL is?
no votes
-
28-05-2012, 17:13 #11
De fout zat bij de hitarea, deze was dus null en daarop crashte hij dus.
Ik heb het gewoon verwijderd en nu werkt de puzzel toch al zoals het moet
thx Zero Grav
Mijn ander probleem post ik hier ook, als het me niet eerst lukt het zelf op te lossen
mvgWait whut?no votes
-
28-05-2012, 17:35 #12Member
- Registered
- 06/06/04
- Location
- Bilzen
- Posts
- 8,805
- iTrader
- 18 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 42/128
no votes
-
28-05-2012, 18:12 #13
Ik heb hier nog een klein foutje tegengekomen, maar weet niet helemaal hoe ik het zou moeten oplossen.
ik heb dus 6 movieclips genaamd vb.(babyBottle,..., en babyBottleTarget)
nu wil ik dat ik mijn movieclip babyBottle kan verslepen (dit werkt) maar bij het loslaten wil ik dat er gecontroleerd wordt ofdat de clip babyBottleTarget raakt.
dit heb ik als volgt gedaan:
dan krijg ik deze errorCode:private function stopDragObject(evt:MouseEvent) { if (evt.target.hitTestObject(getChildByName(evt.target.name + "Target"))) { evt.target.x = getChildByName(evt.target.name + "Target").x; evt.target.y = getChildByName(evt.target.name + "Target").y; //hier code plaatsen voor audio af te spelen } else { evt.target.x = xPosDrag; evt.target.y = yPosDrag; } evt.target.stopDrag(); }
TypeError: Error #2007: Parameter hitTestObject mag niet null zijn.
at flash.display:
isplayObject/_hitTest()
at flash.display:
isplayObject/hitTestObject()
at main/stopDragObject()Wait whut?no votes
-
28-05-2012, 18:37 #14Member
- Registered
- 06/06/04
- Location
- Bilzen
- Posts
- 8,805
- iTrader
- 18 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 42/128
Ge moet natuurlijk ook wel uw foutmeldingen lezen. Uw parameter in hitTestObject is null. Dus er is geen child dat de naam evt.target.name + "Target" heeft.
Uw evt.target.name eens tracen en kijken of het wel is wat ge ervan verwacht.no votes
-
28-05-2012, 19:36 #15
Ja, ik heb het gevonden.
de fout zat idd bij evt.target.name kheb ipv evt.target.name gewoon direct de namen erin gezet en de functie 3X gekopierd
het werkt
Wait whut?no votes

Sowieso is die van Flash ook echt brol, Flash Builder is veel handiger.
