Toon posts:

[flash mx] actionscript malaise

Pagina: 1
Acties:

Verwijderd

Topicstarter
hallo, ik zit nu al tijdje vast op een actionscriptje :X

zou er iemand me misschien kunnen helpen, heb er koppijn van 8)7


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
for (i=0 ; i< 5; i++) { //br    
    for (j=0 ; j < figuur.childNodes[i].childNodes.length ; j++){
        node = figuur.childNodes[i].childNodes[j].nodeName.toString(); //font
                
        if(node != null){
            _root.createEmptyMovieClip("letter_" + i + "" + j,j);
    //x+(10*j)   y+(12*i)
            _root["letter_" + i + "" + j].createTextField("tekst",1,0,0,10,24);
            _root["letter_" + i + "" + j].tekst.text = figuur.childNodes[i].childNodes[j].firstChild; 
            _root["letter_" + i + "" + j].tekst.setTextFormat(letterFormaat);
            _root["letter_" + i + "" + j]._x = x + (7 * j);

            _root["letter_" + i + "" + j]._y = y+(12*i);

            
        //trace(_root["letter_" + i + "" + j]._y);
        }
    }
    
}



normaal zou ik zou een output moeten hebben:

010101010101010101010
010101010001010100100
010101010001010100100
...


maar hij doet:
010101010001010100100010101010001010100100010101010001010100100010


de fout is dat hij hier de Y-waarde niet zet:

code:
1
   _root["letter_" + i + "" + j]._y = y+(12*i);



wanneer ik de Y-waarde trace krijg ik sjans toch goede getallen:
12
45
36
...


maar hij wil gewoon de movieclips niet op die Y-waarde zetten


zie ik iets over het hoofd? heeft er iemand enig idee?

thx

  • GraasGast
  • Registratie: Oktober 2000
  • Laatst online: 04-08 13:06

GraasGast

Analogue Heaven

i + "" + j is toch bulsjit? i + j werk toch ook?

en mischien is eval() iets?

code:
1
_root[eval("letter_" + i + j)]._y = y+(12*i);

[ Voor 10% gewijzigd door GraasGast op 27-02-2003 15:27 ]


Verwijderd

Topicstarter
maar dan zou het toch voor de X-waarde ook niet moeten gaan? en die werkt wel

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
Verwijderd schreef op 27 February 2003 @ 15:22:
hallo, ik zit nu al tijdje vast op een actionscriptje :X

zou er iemand me misschien kunnen helpen, heb er koppijn van 8)7
ook ik kreeg ook koppijn als ik jouw code zag :) ...

probeer hetvolgende eens :

Flash ActionScript:
1
2
3
4
5
6
7
8
var tDepth = 100; //some startdepth
var tMC = null;

for { for {
     tMC = _root.createEmptyMovieClip("letter_" + i + "x" + j, tDepth++);
     tMC._x = ...
     tMC._y = ....
 }}


de fout zit em in ofwel 2 dingen:

a) de naam wordt duplicate in jouw geval,
b) de depth moet echt wel uniek zijn of je creatEmptyMovie geeft geen correcte MC
door.

en met tMC aanroepen kun je slechts 1 typo maken he :) keep it simple. dus zou ik ook geen XML gebruken in je loopje maar met arrays werken (als het kan) en Vooral je temp variable leesbaar maken i en j??? x en y leest wel vlotter...

en vanwaar komen je x en y variablen???? daar wordt altijd iets mee opgeteld maar nergens reset dus gaat die x altijd increasen???

natuurlijk oon een updateStage() (of het flash equivalent)...

[ Voor 17% gewijzigd door hobbit_be op 27-02-2003 20:21 ]


Verwijderd

Topicstarter
inderdaad het is gelukt: het probleem was de diepte!!

een voorbeeld applicatie staat op:
http://users.skynet.be/ni...mel/XMLpicture/index.html

je zal wel zien wat de bedoeling is van de verschillende typo's ;)

je krijgt wel een 8-tal script errors maar als je telkens NO drukt en een 5-tal minuutjes geduld hebt, zie je wel waarom

ik haal al mijn informatie uit een XML-file:
http://users.skynet.be/ni...mel/XMLpicture/images.xml

nu maak ik dus telkens een MC aan met een tekstveld in

voor de errors te verminderen, heb ik nu gemaakt dat er gewoon telkens tekstvelden gemaakt worden

volgens mij krijg ik géén script error meer, als ik gewoon alle data in één tekstveld kan zetten, maar dan zou ik wel verschillende fontcolors in één typo moeten kunnen definiëren

dus bv.
code:
1
2
3
4
5
6
7
_root["tekst_" + i + "" + j].text = figuur.childNodes[i].childNodes[j].firstChild; 
_root["tekst_" + i + "" + j].setTextFormat(HIER ZWART MAKEN);

//bij volgende lusdoorgang

_root["tekst_" + i + "" + j].text = figuur.childNodes[i].childNodes[j].firstChild; 
_root["tekst_" + i + "" + j].setTextFormat(HIER ROOD !! MAKEN);



is dit mogelijk om juist voor één letter de fontcolor aan te passen?

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
yow fellow belgian...

het is idd mogelijk om een style / character te doen. maar eerlijk gezegd de snelheid gaat niet echt in de aanmaak zijn maar gewoon in de hoeveelheid en parsing. zoals eerder gezegd is XML daar niet voor geschikt en ook jouw 'loop' (for/for) is erg traag. Mischien gata het goed op jouw XP1600 maar ik moet 3 minuten wachten op mijn PII 400 x2 (BP6) als designer kun je beter van uitgaan van tragere PC's... Zou het niet beter zijn gewoon een JPG met de image te downloaden dan XML - parsing te doen?

Maar op je vraag: ja het kan - lees de manual (FStyle of zoiets) Repost anders met die andere vraag. dus je loop gaat er beter zo uitzien:

Flash ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var x, y = 0;
var width = figuur.childNodes.length
var height = figuur.childNodes[1].childnodes.length 
var tRow = null;
var tMC = null;
var tDepth = 0;
while (y<width)
{
  tRow = figuur.childNodes[y];
  x = 0;
  while (x<width)
  {
     tMC = _root.CreateEmptyMovieClip("dynamic"+tDepth, tDepth);
     tMC._x = ...
     tMC._y = ...
     tMC.text = tRow.childNodes[x].firstChild;
     ++x;
  }
  ++y;
}


als je werkt met een array gaat het zeker 100x (das 1000% sneller).

maak dus een xml-file:

code:
1
<data>20 20 a 10 b 10 c 120 ..... </data>


en een array split op die data.

bovendien zitten alle images in 1 xml -file wat ook niet proper is maar gewoon een
xml / image...

nog wat tips: probeer ipv 32Bit/letter gewoon 256 (meestal voldoende voor dit doeleind) met een palette. en geef aan in je fieldname wat de letter is (1 of 0)

dus
code:
1
2
3
4
5
<image name="oog" width="50" height="50" style="sans">
   <on col="128"/><off col="16>
    <colors>
      <col id="1" value="0x121211"/>
</>


je kunt veel beter informatie in een attribute steken - veel sneller (omdat dat een array is)

edit:
wou nog wel effe kwijt dat het mooi is :) maar het kan dus zeker een paar honderd keer sneller :)

[ Voor 25% gewijzigd door hobbit_be op 28-02-2003 16:30 ]


Verwijderd

Topicstarter
ik heb deze morgen pas gelezen wat ik je hier schreef en het zal pas voor volgende week zijn dat ik t proberen (ga er ff uit ;))

bedankt voor je tips


een update staat op:
http://users.skynet.be/ni...mel/XMLpicture/index.html

ik steek nu alle waarden ipv. in aparte tekstvelden in één tekstveld per regel met html

dus nu ga t ook al wat sneller...
Pagina: 1