Avatar billede maqhem Nybegynder
26. juli 2006 - 12:15 Der er 15 kommentarer og
1 løsning

class createEmptyMovieClip

Hvorfor duer nedenstående ikke:

class klasse {
    private var number:Number = 0;
    public function drawRect(var x:Number, var y:Number):Void {
        with(_root.createEmptyMovieClip('mc' + number, number)) {
            _x = x;
            _y = y;
            beginFill('0xffffff', 100);
            lineTo(10, 0);
            lineTo(10, 10);
            lineTo(0, 10);
            lineTo(0, 0);
        }
        number++;
    }
}

·························

I Flash kalder jeg:

var c:klasse = new klasse();
c.drawRect(50, 50);
c.drawRect(100, 100);
c.drawRect(150, 150);

·························

Output:

**Error** ...\klasse.as: Line 3: Parameter name expected
        public function drawRect(var x:Number, var y:Number):Void {

**Error** ...\klasse.as: Line 12: ActionScript 2.0 class scripts may only define class or interface constructs.
            }

**Error** ...\klasse.as: Line 13: ActionScript 2.0 class scripts may only define class or interface constructs.
            number++;

**Error** ...\klasse.as: Line 14: Unexpected '}' encountered
        }

Total ActionScript Errors: 4     Reported Errors: 4

·························

På forhånd tak!
Avatar billede thulstrup Nybegynder
26. juli 2006 - 12:46 #1
public function drawRect(x:Number, y:Number):Void {
istedet for:
public function drawRect(var x:Number, var y:Number):Void {
Avatar billede maqhem Nybegynder
26. juli 2006 - 13:08 #2
Hvorfor må der ikke stå var?
Avatar billede maqhem Nybegynder
26. juli 2006 - 14:27 #3
... og hvad er det smarte i, at benytte flere klasser?
... og hvordan laver man, hvis man kan, en funktion, der køres én gang: Når klassen oprettes?
... og så kan jeg heller ikke få extends til, at du :(

- er du en guttermand, at hjælpe mig med disse?
Avatar billede thulstrup Nybegynder
26. juli 2006 - 14:46 #4
Hvorfor må der ikke stå var?
Fordi det er parametre. Du skriver jo heller ikke var foran dine parametre i alm. funktioner.


... og hvad er det smarte i, at benytte flere klasser?
Det er bl.a. logik, overskuelighed og genbrugelighed.


... og hvordan laver man, hvis man kan, en funktion, der køres én gang: Når klassen oprettes?
Kode der ligger i din contructor vil blive kørt når klassen oprettes
class klasse {
  public function klasse(){
    trace("jeg bliver kørt");
  }
}


... og så kan jeg heller ikke få extends til, at du :(
Det kan f.eks. se sådan her ud:
class klasse extends MovieClip {
  public function klasse(){
    this._x = 100;
  }
}
Avatar billede maqhem Nybegynder
26. juli 2006 - 15:25 #5
Kan man også lave dette i Flash så:

var ting:klasse = new enMetodeIKlassen();

?

... hvis ja, hvorfor gør man så det?

(bare smid et svar, du har jo besvaret spørgsmålet :) )
Avatar billede thulstrup Nybegynder
26. juli 2006 - 15:34 #6
Hvis du har en static method i en klasse, kan du godt kalde den direkte uden først at oprette et instance af klassen.

Her er et eksempel:

class StringUtils {
  public static function ucFirst(input:String):String {
    return input.charAt(0).toUpperCase() + input.substring(1);
  }
}

Og så kalder du den med:
trace(StringUtils.ucFirst("hej med dig"))
Avatar billede maqhem Nybegynder
26. juli 2006 - 15:36 #7
Fedt!
Avatar billede maqhem Nybegynder
26. juli 2006 - 15:42 #8
... lige et sidste spørgsmål, nu hvor jeg har fanget én:

class klasse {
    private var number:Number = 0;
    public function klasse() {
        trace(number);
        number++;
    }
}

og i Flash:

var a:klasse = new klasse();
var b:klasse = new klasse();

returnerer 0 og 0.
Forståeligt nok, da vi arbejder med hver sin klasse!
Men hvordan skulle man gøre, hvis man vil have en variabel i en klasse, som er fælles for alle oprettede klasse -forståeligt?
Altså sådan, den ville tælle opad i eksemplet ovenfor :)

... det var jo dér, jeg troede, jeg kunne oprette en klasse mere som register - men kunne ikke få min extends til at virke...
Hvordan vil du løse det?
... og buger man extends sådan?
Avatar billede thulstrup Nybegynder
26. juli 2006 - 15:59 #9
class Klasse {
    private static var number:Number = 0;
    public function Klasse() {
        trace(number);
        number++;
    }
}


var a:Klasse = new Klasse(); //0
var b:Klasse = new Klasse(); //1
Avatar billede maqhem Nybegynder
26. juli 2006 - 16:43 #10
Fedest!

TAK THULSTRUP!!!
Avatar billede maqhem Nybegynder
26. juli 2006 - 21:28 #11
Jeg bliver altså nødt til, at spørge om en ting mere:

Hvordan laver jeg valgfri parametre?

Ligesom dette Code Hint:

new Klasse( paramOne [, paramTwo [, paramThree] ] ] )
(fandt lige selv på det, kunne ikke komme i tanker om, hvor, jeg havde set det...)

Det behøver ikke, være en klasse - bare en almindelig funktion!
Hvordan laver jeg det i en funktion selv?
Avatar billede maqhem Nybegynder
26. juli 2006 - 21:29 #12
(Sig til, hvis jeg spørger for meget - har det bare med, at brænde alle spørgsmål af, når jeg endelig spørger på eksperten og har fanget en ekspert)
Avatar billede maqhem Nybegynder
26. juli 2006 - 21:33 #13
Hmm... Og måske også sådan, at funktionen genererer et resultat alt efter, hvor mange parametre, der er proppet ind!
Altså sådan, at man kan skrive så mange, man vil - ud over, hvad man har indbygget i funktionen :)
Avatar billede thulstrup Nybegynder
26. juli 2006 - 21:48 #14
Valgfri:
function valgfri(p1:String, p2:String, p3:String):Void {
    trace(p1);
    if (p2) {
        trace(p2);
    }
    if (p3) {
        trace(p3);
    }
    trace("")
}
valgfri("hej");
valgfri("hej", "med");
valgfri("hej", "med", "dig");


X antal parametre:
function xAntal():Void {
    for (var i:Number = 0; i<arguments.length; i++) {
        trace("param "+i+" er: "+arguments[i]);
    }
}
xAntal("hej", "med", "dig", 1, 2, 3, ["fire", "fem", "seks"], {syv:7, otte:8, ni:9});
Avatar billede maqhem Nybegynder
26. juli 2006 - 21:51 #15
Psycho!
Jeg kigger på det :D
Avatar billede maqhem Nybegynder
26. juli 2006 - 22:04 #16
Det virker ;)
Du er altså for sej til det dér...

Nu stopper jeg for denne gang, og opretter et nyt spørgsmål, hvis mere falder mig ind.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester