<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Flexmaniak.pl &#187; height</title>
	<atom:link href="http://blog.flexmaniak.pl/tag/height/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.flexmaniak.pl</link>
	<description>Flex, Papervision3D, PHP, Symfony</description>
	<lastBuildDate>Sat, 07 Aug 2010 11:49:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Ustawienie szerokości i wysokości po utworzeniu komponentu</title>
		<link>http://blog.flexmaniak.pl/flex/ustawienie-szerokosci-i-wysokosci-po-utworzeniu-komponentu</link>
		<comments>http://blog.flexmaniak.pl/flex/ustawienie-szerokosci-i-wysokosci-po-utworzeniu-komponentu#comments</comments>
		<pubDate>Sun, 17 Jan 2010 10:40:03 +0000</pubDate>
		<dc:creator>damian</dc:creator>
				<category><![CDATA[Flex]]></category>
		<category><![CDATA[height]]></category>
		<category><![CDATA[measure]]></category>
		<category><![CDATA[szerokość komponentu]]></category>
		<category><![CDATA[width]]></category>
		<category><![CDATA[wysokość komponentu]]></category>

		<guid isPermaLink="false">http://blog.na14.pl/wordpress/?p=332</guid>
		<description><![CDATA[Jednym z częstych problemów z komponentami pisanymi w Action Scripcie jest ustawienie ich szerokości i wysokości tak, żeby były one widoczne od razu po utworzeniu komponentu. Poniżej przedstawie dwa rozwiązania tego problemu. 1. Użycie wydarzenia creationComplete Polega na ustawieniu w kontruktorze Listenera, żeby nasłuchiwał na zdarzenie creationComplete. W metodzie obsługującej zdarzenie zmieniamy odpowiednio width i [...]]]></description>
			<content:encoded><![CDATA[<p>Jednym z częstych problemów z komponentami pisanymi w Action Scripcie jest ustawienie ich szerokości i wysokości tak, żeby były one widoczne od razu po utworzeniu komponentu.<br />
<span id="more-332"></span><br />
Poniżej przedstawie dwa rozwiązania tego problemu.</p>
<p>1. Użycie wydarzenia <strong>creationComplete</strong></p>
<p>Polega na ustawieniu w kontruktorze <strong>Listenera</strong>, żeby nasłuchiwał na zdarzenie <strong>creationComplete</strong>. W metodzie obsługującej zdarzenie zmieniamy odpowiednio width i height komponentu.</p>
<pre class="brush:js">public class FirstBox extends Box {
	public function FirstBox() {
		super();
		this.addEventListener(FlexEvent.CREATION_COMPLETE, creationComplete);
	}

	protected function creationComplete(ev:FlexEvent):void {
		this.width = 150;
		this.height = 50;
	}
}</pre>
<p>2. Nadpisanie metody <strong>measure</strong><br />
Drugie rozwiązanie polega na nadpisaniu metody <strong>measure</strong> i ustawieniu w niej wartosci pol <strong>measuredWidth</strong> i <strong>measuredHeight</strong>, które odpowiadają szerokości i wysokości.</p>
<pre class="brush:js">public class SecondBox extends Box {

	public function SecondBox() {
		super();
	}

	protected override function measure():void {
		super.measure();
		measuredWidth = 150;
		measuredHeight = 50;
	}
}</pre>
<p>Poniżej przedstawiam przykład, który prezentuje problem i rozwiązania.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100%" height="200" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://blog.na14.pl/examples/measure/measure.swf" /><embed type="application/x-shockwave-flash" width="100%" height="200" src="http://blog.na14.pl/examples/measure/measure.swf"></embed></object></p>
<p>O ile oba rozwiązania dają ten sam efekt, to jednak rozwiązanie drugie jest szybsze, prostsze, bardziej logiczne i w ogóle lepsze :) Dlaczego?</p>
<p>Logicznie rzecz biorąc, wymiary komponentu nie powinny być uzależnione od żadnego zewnętrznego czynnika (zgodnie z obiektowym podejściem do programowania). W pierwszym przypadku ta zasada nie jest spełniona, gdyż komponent czeka na zdarzenie <strong>creationComplete</strong>, które jest sygnalizowane przez aplikację.</p>
<p>W drugim zadaniu nie wykorzystujemy żadnych mechanizmów (=zdarzeń), tylko nadpisujemy jedną metodę. Oczywiście jest to prostsze rozwiązanie :) Poza tym jest całkowicie uniezależnione od innych komponentów, czy ogólnie aplikacji.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.flexmaniak.pl/flex/ustawienie-szerokosci-i-wysokosci-po-utworzeniu-komponentu/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
