/ Forside / Teknologi / Multimedie & design / Flash / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Flash
#NavnPoint
bentjuul 4251
molokyle 1978
Klaudi 1488
jhvp 1265
pallenoc 1160
katekismus 1020
Fnollerpi.. 790
slander 510
Dr.Disco 500
10  Flash77 500
klasser og private variabler
Fra : Michael


Dato : 23-10-04 22:58

Hej.
Jeg har siddet og leget lidt med implementering af javas Vector i MX2004
educational actionscript 2.0.

Klassen ligner denne :

class Vector{

private var arr:Array
.....
}

Men hvordan kan det være at jeg kan tilgå array´et arr direkte ??
Array´et er jo private.
f.eks. ved følgende test-data i debug:

var tmp = new Vector();
tmp.addElement("bla");
var tmp2=tmp.arr[0]; // Dette burde jeg ikke kunne !!
trace(tmp2); // tmp2="bla" men burde vel være
"undefined"

Vil det sige at en movie automatisk er subclass af de klasser der
instantieres i den movie?
Eller er en variabel i en klasse kun "private" for andre klasser, men ikke
for movie´n?
Jeg kan ikke lige helt få det til at hænge sammen.

Med venlig hilsen
Michael.


 
 
TJ Lunden (24-10-2004)
Kommentar
Fra : TJ Lunden


Dato : 24-10-04 18:40

Hei,

Ja, og enda verre...

class Vector {
private var arr:Number;
function Vector() {
arr = 1;
}
function tr() {
trace(arr);
}
}

var tmp = new Vector();
trace(tmp.arr) // Output : 1;
tmp.arr++;
tmp.tr(); // Output : 2;

Jeg tror ikke du skal prøve å finne noen annen logikk i dette enn at dette
er en feil i Flash som MM, forhåpentligvis av en god grunn, ikke har ordnet
enda.
Det beste er nok å prorgrammere slik som anbefalt innen oop og håpe på at de
fikser det til neste versjon.
Hvis noen mener det er en grunn til at dette kan skje, vær vennlig og si
ifra.

Ellers håper jeg dere bruker:
http://www.macromedia.com/support/email/wishform/

Når dere finner slike ting.

TJ Lunden


"Michael" <agentmikie@cFJERNDETTE.dk> skrev i melding
news:417ad36a$0$179$edfadb0f@dread11.news.tele.dk...
> Hej.
> Jeg har siddet og leget lidt med implementering af javas Vector i MX2004
> educational actionscript 2.0.
>
> Klassen ligner denne :
>
> class Vector{
>
> private var arr:Array
> .....
> }
>
> Men hvordan kan det være at jeg kan tilgå array´et arr direkte ??
> Array´et er jo private.
> f.eks. ved følgende test-data i debug:
>
> var tmp = new Vector();
> tmp.addElement("bla");
> var tmp2=tmp.arr[0]; // Dette burde jeg ikke kunne !!
> trace(tmp2); // tmp2="bla" men burde vel være
> "undefined"
>
> Vil det sige at en movie automatisk er subclass af de klasser der
> instantieres i den movie?
> Eller er en variabel i en klasse kun "private" for andre klasser, men ikke
> for movie´n?
> Jeg kan ikke lige helt få det til at hænge sammen.
>
> Med venlig hilsen
> Michael.
>



Michael (24-10-2004)
Kommentar
Fra : Michael


Dato : 24-10-04 23:08

[snip]
> Jeg tror ikke du skal prøve å finne noen annen logikk i dette enn at dette
> er en feil i Flash som MM, forhåpentligvis av en god grunn, ikke har
ordnet
> enda

Tjaee...det må jo nok være en fejl/mangel.
Man må da håbe macromedia får det rettet.
Specielt hvis de vil tilnærne sig OOP.
Og ikke mindst at de får implementeret nested/inner classes også.

..> Det beste er nok å prorgrammere slik som anbefalt innen oop og håpe på at
de

joee...men min vector-klasse var nu mere et lille eksperiment med klasser i
action-script :)

Med venlig hilsen
Michael



Henrik L (15-04-2005)
Kommentar
Fra : Henrik L


Dato : 15-04-05 21:06

Linjen
var tmp = new Vector();
bevirker, at compileren ikke udfører type checking, når der referes til tmp
i linjen
var tmp2=tmp.arr[0];
Skriver du i stedet
var tmp:Vector = new Vector();
giver compileren en fejlmelding i linjen
var tmp2=tmp.arr[0];
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 4: The member is
private and cannot be accessed.
var tmp2=tmp.arr[0];

Total ActionScript Errors: 1 Reported Errors: 1

Hilsen henrik lange


"Michael" <agentmikie@cFJERNDETTE.dk> skrev i en meddelelse
news:417ad36a$0$179$edfadb0f@dread11.news.tele.dk...
> Hej.
> Jeg har siddet og leget lidt med implementering af javas Vector i MX2004
> educational actionscript 2.0.
>
> Klassen ligner denne :
>
> class Vector{
>
> private var arr:Array
> .....
> }
>
> Men hvordan kan det være at jeg kan tilgå array´et arr direkte ??
> Array´et er jo private.
> f.eks. ved følgende test-data i debug:
>
> var tmp = new Vector();
> tmp.addElement("bla");
> var tmp2=tmp.arr[0]; // Dette burde jeg ikke kunne !!
> trace(tmp2); // tmp2="bla" men burde vel være
> "undefined"
>
> Vil det sige at en movie automatisk er subclass af de klasser der
> instantieres i den movie?
> Eller er en variabel i en klasse kun "private" for andre klasser, men ikke
> for movie´n?
> Jeg kan ikke lige helt få det til at hænge sammen.
>
> Med venlig hilsen
> Michael.
>



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste