PDA

Volledige versie bekijken : Beginners vraagje


refresh
%Europe/Berlin %501 %2007, 13:02
Goedemiddag,

Ik geloof dat ik een van de basis dingen niet helemaal lijkt te snappen met as3 in flash.

Ik heb een class geschreven (deze staat in de map classes en die map in de zelfde als men fla.) zie hieronder :

package classes {

import flash.display.Sprite;

class Woord extends Sprite {

public var titel;
public var inhoud;

function Woord(){
trace("yo");
/*var textfield = new TextField();
textfield.text = "yooy"
this.addChild(textfield)*/
}
}
}

En nu wou ik deze op de stage importeren waar het dus volgensmij fout gaat.

Op het eerste keyframe heb ik dus getypt :

import classes.Woord;
var test = new Woord()

Dan krijg ik een foutmelding dat Woord niet gedefineerd is.

Dus ik snap even niet hoe ik op de main stage moet beginnen moet ik persee een class maken die men stage voorsteld en die als document class instellen ? Of vergeet ik nog iets gewoon in men eerste keyframe.

Ik heb me echt al rot gezocht maar ik kon geen duidelijke uitleg vinden!
Ik hoop dat jullie mij kunnen helpen want ik wil snel weer verder !

Alvast hartelijk dank en vriendelijk groeten,

Bob

TheDutch
%Europe/Berlin %509 %2007, 13:14
Maak de class en functie (de constructor) eens public :).

// EDIT: Probeer ook te gaan werken met data typen, dat is heel belangrijk in AS 3. Dus dit zou het dan moeten zijn:

package classes {

import flash.display.Sprite;

public class Woord extends Sprite {

public var titel:String;
public var inhoud:String;

public function Woord(){
trace("yo");
/*var textfield = new TextField();
textfield.text = "yooy"
this.addChild(textfield)*/
}
}
}


import classes.Woord;
var test:Woord = new Woord();

refresh
%Europe/Berlin %514 %2007, 13:20
Aaah thank you very mutch!

Ik dacht dat ze standaard op public stonden ! Weer wat geleerd :D

Ja zal erop gaan letten ben vaak een beetje lui daarvoor :#

TheDutch
%Europe/Berlin %517 %2007, 13:24
Ik dacht dat ze standaard op public stonden !
Standaard staan ze op "internal" wat betekend dat ze alleen zichtbaar (lees: bereikbaar) zijn in de package waar ze in zitten. Aangezien je "new Woord()" aanroept buiten de package "classes" zal je die niet kunnen bereiken :).

Het is good-practice om daarom altijd een access specifier (public, private, protected, of internal) op te geven zodat het precies duidelijk is wat je er mee wilt, zelfs als je "internal" wilt gebruiken.

TheDutch
%Europe/Berlin %519 %2007, 13:27
Ja zal erop gaan letten ben vaak een beetje lui daarvoor :#
Je zult jezelf er alleen maar door tegenkomen wanneer je het niet doet. Wanneer je het namelijk niet doet krijg je geen duidelijke code completion, zijn fouten in je code erg lastig op te sporen, zijn fouten sneller te maken, en is je code een heel stuk minder leesbaar. Maak er dus een gewoonte van om te data typen net als dat je er een gewoonte van moet maken altijd een access specifier te gebruiken :).

refresh
%Europe/Berlin %519 %2007, 13:28
Standaard staan ze op "internal" wat betekend dat ze alleen zichtbaar (lees: bereikbaar) zijn in de package waar ze in zitten. Aangezien je "new Woord()" aanroept buiten de package "classes" zal je die niet kunnen bereiken :).

Het is good-practice om daarom altijd een access specifier (public, private, protected, of internal) op te geven zodat het precies duidelijk is wat je er mee wilt, zelfs als je "internal" wilt gebruiken.

Oke ! hardtelijk dank voor de tip. Gat het zeker doen ;)

TheDutch
%Europe/Berlin %520 %2007, 13:29
Graag gedaan! Succes :).