[Flash MX Actionscript] Meerdere objecten die mc maken

Pagina: 1
Acties:

  • Norjee
  • Registratie: April 2000
  • Niet online
Ik probeer een object te maken die een movieclip met een textfield in de _root movie zet. Alleen flash begrijpt mij niet (of ik flash niet)..

Als ik een object maak gaat alles prima, maar maak ik daarna een tweede, dan gaat de eerste weer weg.. Ik begrijp hier dus helemaal niks meer van.. want ik geef alles een uniek id..

Flash ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function LinkObj(name , parent , y , text)
    {
    trace("ik ben hier wel");
    this.parent = parent;
    // het ding krijgt een uniek id.. maar dat lijkt niet genoeg
    this.baseMc = this.parent.createEmptyMovieClip(name+"__obj__" , 0)
    this.baseMc.createTextField("tf"+name , 0 , 1 , y, 40, 20)
    this.baseMc["tf"+name].text=text
    }

blaat = new LinkObj("blaat" , _root , 0 ,"hallo")

blaat2 = new LinkObj("blaat2" , _root , 50 , "hallo 2")

blaat3 = new LinkObj("blaat3" , _root , 100 , "hallo 3")


een andere poging, die op hetzelfde strand
Flash ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
__uniekId = 0
function LinkObjectClass()
    {
    this = _root.createEmptyMovieClip("LinkObjectClassMovieClip"+__uniekId++ ,1);
    
    this.init = function(text , y)
        {
        this.createTextField("catText" , y , 0 , 0 , 400 , 200);
        this.catText.text=text;             
        }
    
    }
    
objectArray = new Array();

id = objectArray.length;
objectArray[id] = new LinkObjectClass();
objectArray[id].init("Hallo" , 0);

id = objectArray.length;
objectArray[id] = new LinkObjectClass();
objectArray[id].init("Hallo 22" , 20);


En mijn eerste poging om het op een nette manier te doen, en de class LinkObject de MovieClip class te laten extenden, maar dit heb ik helemaal al opgegeven :/:
Flash ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// ik heb een LinkObject movieclip in mn main flash, die ook voor
// As beschikbaar is via id "LinkObject"
function LinkObjectClass()
    {
    
    
    }
LinkObjectClass.prototype = new MovieClip();

LinkObjectClass.prototype.init = function(text , y)
    {
    this.createTextField("catText" , y , 0 , 0 , 400 , 200);
    this.catText.text=text;
    }



__uniekId = 1;
function createLinkObjectClass(name, depth)
    { 
    /* een nietwerkende poging 
    LinkObject.duplicateMovieClip("LinkObject"+__uniekId, 0)
    Object.registerClass("LinkObject"+__uniekId  , LinkObjectClass   );
    attachMovie("LinkObject"+__uniekId, name, depth);
    __uniekId++
    */
    Object.registerClass("LinkObject"  , LinkObjectClass   );
    attachMovie("LinkObject", name, depth);
    
    }

// deze wordt overschreven
createLinkObjectClass("aap" , 10);
aap.init("Hallo" , 0);

createLinkObjectClass("noot" , 111);
noot.init("Hallo 22" , 20);


Het zal vast iets heel simpels zijn, maar ik kan nergens vinden hoe het nu wel moet :/

  • Norjee
  • Registratie: April 2000
  • Niet online
Okee.. dat was dus simpel :/

de depth had ik steeds gelijk, en dat mag dus niet....

* Norjee Aaaaaarrrrrrrggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh uren en uren heb ik me dr blind op gestaard.. geen wonder dat dat nergens te vinden was, het is errug triviaal :)

Flash ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
__UniekId = 0
function LinkObject(parent)
    {
    this.parent = parent
    
    this.init = function(depth , y)
        {
        this.baseMovie = this.parent.createEmptyMovieClip("__MovieClip__"+__UniekId++ , depth)  
        this.baseMovie ._y = y
        }
        
    this.createDescText = function(text)
        {       
        this.baseMovie.createTextField("__descText" , 0 , 0 , 0 , 100 , 20)      
        this.baseMovie.__descText.text = text
        }
    }


p = new LinkObject(_root)
p.init(0 , 10)
p.createDescText("allemaal geblaat")

q = new LinkObject(_root)
q.init(1 , 20)
q.createDescText("allemaal geblaat 2")
 

[ Voor 4% gewijzigd door Norjee op 21-01-2003 17:50 ]


  • XangadiX
  • Registratie: Oktober 2000
  • Laatst online: 17-06 09:56

XangadiX

trepanatie is zóó kinderachtig

uhm... ja natuurlijk! :)

Stoer; Marduq


Verwijderd

probeer je code in een namespace te gooien.
ik bewaar mijn depth altijd in een var in die namespace;

Flash ActionScript:
1
2
3
4
5
6
if(!_global.rSys){
     _global.rSys = new Object;
     rSys.d = 0;
}

this.parent.createEmptyMovieClip("__MovieClip__"+__UniekId++ , rSys.d++)


Ik zou ik je willen adviseren om een shortcut te maken naar je class prototype:

Flash ActionScript:
1
2
3
4
5
6
7
8
9
p = LinkObjectClass.prototype = new MovieClip();

p.init = function(text , y)
    {
    this.createTextField("catText" , y , 0 , 0 , 400 , 200);
    this.catText.text=text;
    }
//Na al je protos doe je dan:
delete p;

Verwijderd

ik heb nu ook ff dat onderstuh stukkie kode uit je eerste post gechecked...

Waarom 'register' je elke individuele mc die er uit komt?

Idee is juist om een class te maken (die dus ook een subclass van movieclip mag zijn) en deze te gebruiken.
Als je individuele movieclip instances wil extenden is dit niet de manier. Nu maak je overal een mini extensie classje van.

  • Norjee
  • Registratie: April 2000
  • Niet online
B-Top, bedank voor je tips!! , ik zal het nu op jou manier doen :)
Dat laatste stukkie was zien of het dan misschien wel zou werken (en een sublass maken ging niet lekker, dus dan maar wat anders proberen denk ik).. niet dus..

Verwijderd

Norjee schreef op 21 januari 2003 @ 22:10:
B-Top, bedank voor je tips!! , ik zal het nu op jou manier doen :)
Dat laatste stukkie was zien of het dan misschien wel zou werken (en een sublass maken ging niet lekker, dus dan maar wat anders proberen denk ik).. niet dus..
hej, ennuh... _root direct aanschrijven is ook heel vies in AS OOP proggen

  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

Verwijderd schreef op 21 January 2003 @ 22:34:
[...]
hej, ennuh... _root direct aanschrijven is ook heel vies in AS OOP proggen
en ditte dan :

Flash ActionScript:
1
2
3
4
5
6
function Foo(t) {
    this = t;
    this.bar = "Wim";
}

myFoo = new Foo(_root);


:p >:)

"You're only as good, as what you did last week."


Verwijderd

Neej, meer vannuh..
Flash ActionScript:
1
2
3
4
5
rSys.viewComponent = function(v){
      this.$viewPort = v;
}

this.tileView = new rSys.viewComponent(_root);


:)
Pagina: 1