PDA

Volledige versie bekijken : Set property


CruelGenius
%Europe/Berlin %573 %2006, 14:45
Voor mijn eigen leerproces wil ik netjes en goed leren scripten en om dit te leren wil ik beginnen met wat simpele oefeningetjes die toch leuk zijn.

Ik was wat tutorials aan het volgen op actionscript.org en hier werden de beginselen van actionscript uitgelegd. Variablen, paden, get property en set property. Nu kwam ik bij een tutorial waar set property werd uitgelegd en nu leek het me leuk deze na te maken.

http://www.actionscript.org/tutorials/beginner/set_property/index.shtml

Helaas, staat de code in de tutorial op de buttons zelf en ik heb al in meerdere (lees: heel veel) topics gelezen dat dit niet de bedoeling is, nu heb ik al een paar verschillende manieren geprobeerd, zoals de 3 onderstaande, maar het is me niet gelukt.



btn1.onRelease = function () {"_root.vierkant",_x, xpos;}
btn2.onRelease = function () {"_root.vierkant", _y = ypos;}
btn3.onRelease = function () {_root.vierkant._xscale = xscale;}



de variabelen van mijn input teksten zijn: xpos, ypos, xscale

Iemand een idee, lijkt me niet zo heel moeilijk, maar kom er toch niet achter

Emveedee
%Europe/Berlin %586 %2006, 15:04
Je kan beter je inputtextvelden een instance naam geven,
dit is netter dan de var naam.

Stel de instance namen zijn xpos, ypos en xscale.
Wat in je input textveld staat is een string, dit
moet je dus eerst omzetten, en vervolgens
toekennen:


var xScale:Number = Number(xscale.text);
var xPos:Number = Number(xpos.text);
var yPos:Number = Number(ypos.text);

btn1.onRelease = function()
{
_root.vierkant._x = xPos;
}

btn2.onRelease = function()
{
_root.vierkant._y = yPos;
}

btn3.onRelease = function()
{
_root.vierkant._xscale = xScale;
}

Verder is het gebruik van _root niet zo netjes
dit kan problemen opleveren wanneer je de ene
swf inlaad in de andere.
Gebruik liever relatieve paden (bijv _parent etc.)

CruelGenius
%Europe/Berlin %605 %2006, 15:31
var xScale:Number = Number(xscale.text);
var xPos:Number = Number(xpos.text);
var yPos:Number = Number(ypos.text);

btn1.onRelease = function()
{
_root.vierkant._x = xPos;
}

btn2.onRelease = function()
{
_root.vierkant._y = yPos;
}

btn3.onRelease = function()
{
_root.vierkant._xscale = xScale;
}

Nu heb ik het dus zo en mijn instance namen xpos, ypos, xscale, maar ook dit script werkt niet. Ik heb ook geprobeerd van _root _parent te maken, maar ook dit werkt niet.

Als ik het goed begrijp zet je de tekst uit het tekstveld xpos om in een variabele Xpos, die alleen uit cijfers mag bestaan. Hierna gebruikt de functie de inhoud van de variabele om de functie uit te voeren.... tenminste dat zou die moeten doen :D

Emveedee
%Europe/Berlin %621 %2006, 15:54
Kloppen de instance names van de buttons?

Zet anders je .fla eens online?
(dit kan in een bijlage als .rar of .zip
hier opt forum)

CruelGenius
%Europe/Berlin %633 %2006, 16:12
tada .fla

Emveedee
%Europe/Berlin %657 %2006, 16:47
Ach, natuurlijk, denkfout gemaakt :P

Wanneer je op de knop drukt,
moet je de properties inlezen en
omzetten naar een nummer.

Bij t oude script zetten we een keer
die variabelen goed (meteen zodra je
op t frame kwam.)
de textfields hadden toen nog geen waarde,
dus ist logisch dat t niet werkte :)

Dus ipv wat ik net zei:

btn1.onRelease = function()
{
vierkant._x = Number(xpos.text);
}
// etc.

CruelGenius
%Europe/Berlin %729 %2006, 18:30
oke hij doet het bedankt en volgens mij snap ik hem ook, dat vind ik nog belangrijker :D