PDA

Volledige versie bekijken : .height in AS3


toadstool
%Europe/Berlin %679 %2008, 16:18
Ik ben tegen iets aangelopen in AS3.0 dat zich niet voordoet in AS2.0

Om het te illustreren de volgende code

import flash.display.*;

var a:Sprite = new Sprite();
addChild(a);

var cy:uint = 0;

for(var i=0; i<5; i++){
var b = createBlock();
a.addChild(b);
b.y = cy;
cy += b.height + 5;
}

trace("a.height: " + a.height);

function createBlock():Shape {
var block:Shape = new Shape();
block.graphics.beginFill(0xFF0000, 1);
block.graphics.drawRect(0, 0, 10, 10);
block.graphics.endFill();
return block;
}

Dit tracet 'a.height: 70'

Echter deze code, waarin ik de initiele waarde van cy heb veranderd en dus de blokjes 40 pixels lager in a worden geplaatst

import flash.display.*;

var a:Sprite = new Sprite();
addChild(a);

var cy:uint = 40;

for(var i=0; i<5; i++){
var b = createBlock();
a.addChild(b);
b.y = cy;
cy += b.height + 5;
}

trace("a.height: " + a.height);

function createBlock():Shape {
var block:Shape = new Shape();
block.graphics.beginFill(0xFF0000, 1);
block.graphics.drawRect(0, 0, 10, 10);
block.graphics.endFill();
return block;
}

tracet ook 'a.height: 70'

Het lijkt er dus op dat hij de hoogte niet meer vanuit het registratiepunt pakt, maar de effectieve hoogte van child.y tot child.y binnen een parent waarvan je de height opvraagt?

Iemand die dit kan bevestigen en waarom dit zo is? Want erg handig vind ik dat niet..

TheDutch
%Europe/Berlin %696 %2008, 16:43
Een Sprite begint net als een MovieClip pas op de X en Y plek waar zijn eerste child wordt neergezet en eindigt waar de laatste child eindigt :).

Dauntless
%Europe/Berlin %697 %2008, 16:43
Dat is toch logisch?

Dat is hetzelfde als: Je stapelt drie auto's op elkaar (elk 2meter hoog) in een magazijn. Je vraagt dan de hoogte op van de drie auto's samen. Zou het dan logisch zijn dat je als waarde de hoogte van het magazijn terug krijgt?

Misschien is het geen goede vergelijking, maar het is wel degelijk logisch: Teken in Flash een vierkant in een movieclip. Als je dat vierkant even groot tekent, maakt het niet uit wáár je het tekent, de grootte van de movieclip zal altijd constant zijn.

//edit:
Oftewel: Wat hier boven staat. :)

theFlashWizard
%Europe/Berlin %697 %2008, 16:44
Dit heb ik ooit in as2.0 ook al ontdekt. Vond het persoonlijk ook vreemd, maar zo is het dus al een tijdje.

TheDutch
%Europe/Berlin %697 %2008, 16:44
Misschien is het geen goede vergelijking, maar het is wel degelijk logisch: Teken in Flash een vierkant in een movieclip. Als je dat vierkant even groot tekent, maakt het niet uit wáár je het tekent, de grootte van de movieclip zal altijd constant zijn.
Precies en prima metafoor! :)