Avatar billede searchjob Nybegynder
23. juli 2006 - 18:13 Der er 13 kommentarer og
1 løsning

gider ikke lave class why

why siger den denne provokerende fejl?

**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 1: Classes may only be defined in external ActionScript 2.0 class scripts.
    class test { trace("hej"); }

Total ActionScript Errors: 1     Reported Errors: 1

i denne kode
class test { trace("hej"); }
Avatar billede maqhem Nybegynder
23. juli 2006 - 18:17 #1
... Hold da op, hvor en enkel klasse!
1. Jeg tvivler på, du kan lave en så kort class, men jeg har aldrig prøvet selv.
2. Classes kodes i, som den jo skriver klart og tydeligt, i eksterne .as-filer :)
Avatar billede maqhem Nybegynder
23. juli 2006 - 18:23 #2
3. "why" er ikke dansk, og bør i fremtiden blive udskiftet med "hvorfor".
4. "provokende" er en bevidst handling, og kan kun handles af levende væsener!

Ovenstående rettelser anbefaler jeg kun, da det ser total underligt ud:
"why siger den denne provokerende fejl"
Gider du ikke skrive "hvorfor"?
... nej, det kan ikke være det, for så havde du vel også undladt "provokende".

Gør, som du vil - men det ret useriøst ud, og det fraholder mange fra, at svare!
Avatar billede mat Nybegynder
23. juli 2006 - 18:47 #3
Som maqhem skriver (og som compileren fortæller dig) skal klasser defineres i eksterne .as filer.
Derudover kan du ikke gøre det du prøver på, trace skal pakkes ind i en funktion (eksempelvis i contructor funktionen (det er den der har samme navn som klassen));

class Test {
function Test() {
trace("hej");
}
}

I flash vil du så få "hej" skrevet i dit output vindue når du skriver;

var t:Test = new Test();

mvh mat
Avatar billede searchjob Nybegynder
23. juli 2006 - 19:42 #4
maghem hold dig til spørgsmålet i stedet for


mat har lavet en fil der hedder test.as
som ser sådan herud

class test
{
   
   
    private function edit()
    {
        trace("Please edit!");
    }
   
    private function tilfoej ()
    {
        trace("Tilføjer!");
    }
   
    private function slet ( )
    {
        trace("Sletter!");
    }
}

så gemmer jeg den, og i samme mappe har jeg mit .fla dokument, som ser sådan herud
#include "test.as"
var pik:test = new tilfoej();


men den udskriver disse fejl
**Error** C:\Programmer\EasyPHP1-8\www\klasser\test.as: Line 1: Classes may only be defined in external ActionScript 2.0 class scripts.
    class test

Total ActionScript Errors: 1     Reported Errors: 1

og jeg har flash 8.0
Avatar billede mat Nybegynder
23. juli 2006 - 19:51 #5
For det første skal du ikke bruge #include. #include betyder at flash betragter dit actionscript som hvis det var skrevet i actionseditoren.

For det andet kan du ikke new'e en funktion i din klasse, du skal new'e klassen, ikke dens metoder.

For det tredie får du mere end svært ved at få lov til at kalde en funktion, der er deklareret "private" fra andre steder end klassen selv.

altså; Lav dine funktioner public (og giv dem en retur type), og instancier din klasse.

test.as;

class test
{
 
 
    public function edit():Void
    {
        trace("Please edit!");
    }
 
    public function tilfoej ():Void
    {
        trace("Tilføjer!");
    }
 
    public function slet ( ):Void
    {
        trace("Sletter!");
    }
}

i flash actionscript editor;

var t:test = new test();
t.tilfoej();

mvh mat
Avatar billede searchjob Nybegynder
23. juli 2006 - 19:56 #6
jeg vil gerne kunne lave dem hver for sig, så jeg selv kan bestemme hvornår "tilfoej" skal åbnes osv.

så de skal altså være hver for sig, men hvordan loader jeg så .as filen?
Avatar billede maqhem Nybegynder
23. juli 2006 - 19:58 #7
Det gør den af sig selv!
(mit navn er MAQHEM)
Avatar billede maqhem Nybegynder
23. juli 2006 - 19:58 #8
:)
Avatar billede searchjob Nybegynder
23. juli 2006 - 20:00 #9
nååå nu virker det hehe
Avatar billede maqhem Nybegynder
23. juli 2006 - 20:00 #10
Det var godt
Avatar billede mat Nybegynder
23. juli 2006 - 20:00 #11
Du bestemmer jo selv hvornår du vil kalde metoderne på klassen, fjern min nederste linie, så kaldes "tilfoej" aldrig.

Og du loader ikke .as filen, flash ved at den skal lede i den mappe hvor din .fla ligger. Det er ikke nødvendigt at fortælle den det, medmindre du ønsker at placere dine klasse filer andetsteds end .fla filen.

mvh mat
Avatar billede mat Nybegynder
23. juli 2006 - 21:06 #12
vasså?
Avatar billede searchjob Nybegynder
24. juli 2006 - 00:54 #13
smid svar mnat
Avatar billede mat Nybegynder
24. juli 2006 - 09:03 #14
oki
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