<?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>پادشاه فلش &#187; MovieClip</title>
	<atom:link href="http://blog.iflashlord.com/tag/movieclip/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.iflashlord.com</link>
	<description>دست نوشته های یک پادشاه فلش</description>
	<lastBuildDate>Sat, 31 Jul 2010 05:55:09 +0000</lastBuildDate>
	<language>fa</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Display List و اکشن اسکریپت ۳</title>
		<link>http://blog.iflashlord.com/1388/09/display-list-%d9%88-%d8%a7%da%a9%d8%b4%d9%86-%d8%a7%d8%b3%da%a9%d8%b1%db%8c%d9%be%d8%aa-3/</link>
		<comments>http://blog.iflashlord.com/1388/09/display-list-%d9%88-%d8%a7%da%a9%d8%b4%d9%86-%d8%a7%d8%b3%da%a9%d8%b1%db%8c%d9%be%d8%aa-3/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 19:32:54 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[اکشن اسکریپت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[addChild]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Display List]]></category>
		<category><![CDATA[Display Object]]></category>
		<category><![CDATA[getChildAt]]></category>
		<category><![CDATA[getChildIndex]]></category>
		<category><![CDATA[MovieClip]]></category>
		<category><![CDATA[numChildren]]></category>
		<category><![CDATA[removeChild]]></category>
		<category><![CDATA[Sprites]]></category>
		<category><![CDATA[TextField]]></category>
		<category><![CDATA[اکشن اسکریپت 3]]></category>

		<guid isPermaLink="false">http://blog.iflashlord.com/?p=116</guid>
		<description><![CDATA[Display List چیست ؟ Display List لیستی از تمامی اجزاء که دون فلش هستند ، همه چیز هایی که دیده می شوند ، همان کارهایی که می توانید توی نرم افزار فلش انجام بدید و سطوح بالا و پایین بودن اشاء رو مشخص کنید و حذف کنید و&#8230; در این مقاله بیشتر به .addChild() و [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Display List چیست ؟</strong><br />
Display List لیستی از تمامی اجزاء که دون فلش هستند ، همه چیز هایی که دیده می شوند ، همان کارهایی که می توانید توی نرم افزار فلش انجام بدید و سطوح بالا و پایین بودن اشاء رو مشخص کنید و حذف کنید و&#8230;<br />
در این مقاله بیشتر به .addChild() و .removeChild() پرداخته می شود.</p>
<p><strong>استفاده ابتدایی از Display List :</strong><br />
ساده ترین استفاده از Display List افزودن یک شی به صفحه و حذف آن می باشد که به ترتیب توسط متدهای .addChild() و .removeChild() انجام می شود.</p>
<p><em>یک مثال ساده برای استفاده addChild </em></p>
<p><!--c1--></p>
<div dir="ltr"><!--ec1-->var myText:TextField = new TextField();<br />
myText.text = &#8220;Hello PCSEVEN!&#8221;;<br />
addChild(myText);<!--c2--></div>
<p><!--ec2--></p>
<p>در کد بالا ابتدا یک شی از نوع TextField ایجاد کردیم و سپس مقدار Hello PCSEVEN! رو به اون دادیم ، تا اینجای کار هیچ تغییری در فلش ایجاد نمی کند و تمامی این موارد می بایست توسط addChild به Display List و یا لیست اشاء نمایشی فلش افزوده شود ، آرگمان وردی addChild مقدار نام شی مورد نظر ما می باشد.</p>
<p>حال فرض می کنیم می خواهیم این شی رو حذف کنیم به صورت زیر از removeChild استفاده می کنیم :</p>
<p><!--c1--></p>
<div dir="ltr"><!--ec1-->removeChild(myText);<!--c2--></div>
<p><!--ec2--></p>
<p><strong>سلسله مراتب در Display List :</strong></p>
<p>اگر شما چندین بار از addChild استفاده کنید متوجه می شود که اشاء ی که به صفحه افزوده می شوند دارای سلسله مراتبی هستند و در هر بار افزودن در سطح های مختلفی قرار می گیرند، که باعث ایجاد پوشش و دیده نشدن بخشی از اشایی قبلی نیز می شود ، برای روشن تر شدن این موضوع به مثال زیر دقت نمایید :</p>
<p><span id="more-116"></span></p>
<p>در این مثال ما  سه شی که در کتابخانه فلش قبلا ایجاد کرده ایم را فراخوانی می کنیم و به Display List اضافه می کنیم :</p>
<p><!--c1--></p>
<div dir="ltr"><!--ec1-->var myTriangle:TriangleShape = new TriangleShape();<br />
var myCircle:CircleShape = new CircleShape();<br />
var myStar:StarShape = new StarShape()</div>
<div dir="ltr">addChild(myTriangle);</div>
<div dir="ltr">addChild(myCircle);</div>
<div dir="ltr">addChild(myStar);</div>
<p><!--ec2--></p>
<p>ما برای افزودن هر شی یک باز از addChild استفاده می کنیم، به این نکته توجه داشته باشید که ترتیب استفاده از addChild در ترتیب قرار گیری سطوح نقش مستقیم دارد و تعیین کننده آن می باشد<br />
این مثال را با چند بار جا به جا کردن addChild ها انجام بدهید تا این موضوع برایتان روشن شود.<br />
<em><br />
توجه داشته باشید TriangleShape و CircleShape و StarShape جزو کلاس های ثابت نرم لفزار فلش نیستند و شما خودتان می بایست اونها رو بسازید و درون کتابخانه فلش نام گزاری کنید تا بتوان آنها را درون اکشن اسکریپت فرا خوانی کرد ، شما می توانید از هر شکلی برای ایجاد آنها به دلخواه خود استفاده کنید.<br />
</em></p>
<p><strong>استفاده از متد addChildAt و امکان افزودن شی در سطحی خواص :</strong></p>
<p>برخلاف addChild متد addChildAt دارای دو آرگمان ورودی می باشد که به صورت زیر استفاده می شود.</p>
<p>ساختار کلی addChildAt :</p>
<p><!--c1--></p>
<div dir="ltr"><!--ec1-->addChildAt(myObject,indexNumber)<!--c2--></div>
<p><!--ec2--></p>
<p>myObject : نام شی مورد نظر برای افرودن<br />
indexNumber : سطحی که می خواهید شی شما در آن افزوده شود (مقداری عددی ، شروع از صفر)</p>
<p>به عنوان مثال ما سه شی ایجاد می کنیم و دو عدد از آنها را به صورت معمول با استفاده از addChild به صفحه اضافه می کنیم :</p>
<p><!--c1--></p>
<div dir="ltr"><!--ec1-->var myTriangle:TriangleShape = new TriangleShape();<br />
var myCircle:CircleShape = new CircleShape();<br />
var myStar:StarShape = new StarShape()</div>
<div dir="ltr">addChild(myTriangle);</div>
<div dir="ltr">addChild(myCircle);<!--c2--></div>
<p><!--ec2--></p>
<p><img id="--ipb-img-resizer-3" src="http://www.republicofcode.com/tutorials/flash/as3displaylist/displaylist_addChildat.gif" border="0" alt="" width="439" height="222" /></p>
<p>حال می خواهیم شی سوم را جوری اضافه کنیم که زیر این دو شی قرار بگیرد برای این کار کد را به صورت زیر گسترش می دهیم :</p>
<p><!--c1--></p>
<div dir="ltr"><!--ec1-->var myTriangle:TriangleShape = new TriangleShape();<br />
var myCircle:CircleShape = new CircleShape();<br />
var myStar:StarShape = new StarShape()</div>
<div dir="ltr">addChild(myTriangle);</div>
<div dir="ltr">addChild(myCircle);</div>
<div dir="ltr">addChildAt(myStar,0);<!--c2--></div>
<p><!--ec2--></p>
<p>در بخش addChildAt(myStar,0); ما شی myStar و یا همان ستاره را در سطح ۰ افزودیم این کار باعث افزوده شدن در پایین ترین سطح می شود<br />
حال اگر باز هم شی دیگر را به سط ۰ اضافه کنیم باعث می شود به پایین تر ین سطح برود و دیگر سطوح نیز به صورت خودکار تغییر کند</p>
<p><img id="--ipb-img-resizer-2" src="http://www.republicofcode.com/tutorials/flash/as3displaylist/displaylist_addChildat2.gif" border="0" alt="" width="445" height="225" /></p>
<p>در این نسخه از اکشن اسکریپت بر خلاف نسخه های قبلی که صرف نظر از تعداد سطوح امکان مقدار دهی به سطح ها وحود داشت ، اگر شما به طور مثال در کد بالا مقدار سطح را ۱۰ وارد نمایید با پیغام خطا رو به رو خواهید شد ، زیرا این مقدار خارج از Display List می باشد ، می بایست سطح خالی برای افزوده شدن وجود داشته باشد.</p>
<p><!--sizeo:4--><span style="font-size: 14pt; line-height: 100%;"><!--/sizeo--><strong>حذف کردن اشاء با استفاده از متد removeChildAt()</strong><!--sizec--></span></p>
<p><!--/sizec-->حال به موضوع حذف اشاء از Display List می رسیم ، برای این کار از متد removeChildAt() استفاده می شه ، البته برای حذف بر اساس سطح در این روش شما با دادن عدد سطح مورد نظر شی ی که در آن موجود می باشد را حذف می کنید (عمل حذف کردن در پروژه ها کاربرد بسیاری دارد که البته انشاء الله در مبحث های آینده به فواید و استفاده آن خواهیم پرداخت)مثالی از استفاده این روش :</p>
<p><!--c1--></p>
<div dir="ltr"><!--ec1-->var myTriangle:TriangleShape = new TriangleShape();<br />
var myCircle:CircleShape = new CircleShape();<br />
var myStar:StarShape = new StarShape()</div>
<div dir="ltr">addChild(myTriangle);</div>
<div dir="ltr">addChild(myCircle);</div>
<div dir="ltr">addChild(myStar);</div>
<div dir="ltr">removeChildAt(1);<!--c2--></div>
<p><!--ec2-->توجه داشته باشید شما فقط می توانید عددی وارد نمایید که شی آن موجود باشد . نکته مهم دیگر آن است که با حذف سطح شی شماره ۱ کد سطح های جا به جا می شود.در این مثال این موضوع به این مفهوم می باشد که myStar در اندیس ۱ قرار می گیرد و اندیس (index) مربوط به ۲ دیگر موجود نمی باشد.تصویری برای نمایش نتیجه اجرای کد بالا :<img src="http://www.republicofcode.com/tutorials/flash/as3displaylist/displaylist_removeChildAt.gif" border="0" alt="" width="451" height="228" /></p>
<p><!--sizeo:4--><span style="font-size: 14pt; line-height: 100%;"><!--/sizeo--><strong>جا به جایی اندیس اشیاء در Display List</strong><!--sizec--></span></p>
<p><!--/sizec-->شما توسط متد swapChildren می توانید اشایی که قبلا به Display List افزوده اید را جا به جا کنید این متد دو آرگمان دارد که با نام اشایی که می خواهید جا به جا شود مقدار دهی می شود ، این عمل جابا به جایی بدون تاثیر بر دیگر اشائ انجام می شود و فقط دو شی را جا به جا می کند ، در زیر به مثال در این مورد می پردازیم :</p>
<p><!--c1--></p>
<div dir="ltr"><!--ec1-->var myTriangle:TriangleShape = new TriangleShape();<br />
var myCircle:CircleShape = new CircleShape();<br />
var myStar:StarShape = new StarShape()</div>
<div dir="ltr">addChild(myTriangle);</div>
<div dir="ltr">addChild(myCircle);</div>
<div dir="ltr">addChild(myStar);</div>
<div dir="ltr">swapChildren(myStar, myCircle);<!--c2--></div>
<p><!--ec2-->در کد بالا جای myStar با myCircle عوض می شود (در واقع جای ستاره با دایره ) که نتیجه را می توانید با مشاهده تصویر زیر بهتر درک نمایید :<img src="http://www.republicofcode.com/tutorials/flash/as3displaylist/displalist_swapChildren.gif" border="0" alt="" width="485" height="246" /><strong><!--sizeo:4--><span style="font-size: 14pt; line-height: 100%;"><!--/sizeo-->دیگر موارد مورد نیاز در DisplayList <!--sizec--></span><!--/sizec--></strong>DisplayList دارای متد و روش های بسیاری بوده که اشاره دقیق آنها را به آینده و در مثال های کاربردی توضیح خواهیم داد در زیر به تعدادی از متد که کاربرد زیادی دارند می پردازیم ، البته با توجه به نام آنها به راحتی نوع کار آنها قابل فهم خواهد بود&#8230;.</p>
<ol type="1">
<li><strong><em>.getChildIndex(objectName)</em></strong> &#8211; با استفاده از این متد می توانید به کد اندیس index یک شی دسترسی پیدا کنید که objectName نام شی یا همان instance name شی مورد نظر شما می باشد ، با این کار می توانید به شی مورد نظر اشاره کنید و روی آن عملیات های مورد نظر خود را انجام دهید..</li>
<li><strong><em>.getChildAt(indexPosition)</em></strong> &#8211; با این روش می توانید به یک شی که فقط اندیس آن را می دانید اشاره کنید و روی آن عملیات های مورد نظر خود را انجام دهید.</li>
<li><em>.numChildren</em> &#8211; با این خاصیت شما می توانید به تعداد اشاء موجود در DisplayList دسترسی پیدا کنید.</li>
</ol>
<p><!--sizeo:4--><span style="font-size: 14pt; line-height: 100%;"><!--/sizeo--><strong>توضیحات پایانی :</strong><!--sizec--></span></p>
<p><!--/sizec-->باید به این نکته توجه داشته باشید که فقط Display Object ها را می توان به DisplayList افروز و این به این معنی می باشد که اشاء از نوع movieClips, Sprites, TextFields, Videos, Bitmaps, و&#8230; را می توان به DisplayList اضافه نمود و شما نمی توانید اشاء غیر قابل نمایش (غیر بصری) مثلا یه مقدار و یا یک عدد را به تنهای به Display List اصافه کنید.بعضی از Display Object ها نیز از نوع Display Object Containers هستند و این به این معنی م باشد که درون این اشاء نیز شما می توانید شی جدیدی اضافه نمایید برای مثال MovieClips , Sprites ها&#8230;در زیر به مثالی اشاره می کنیم که در آن ابتدا یک MovieClip ایجاد می کنیم و بعد دو فیلد متنی تعریف می کنیم و این دو فیلد را درون MovieClip خود اضافه می کنیم (توسط addChild) و در مرحله بعد به این فیلد مقدار دهی می کنیم و در آخر MovieClip را به Display List اضافه می کنیم ، این کار بعث می شود که MovieClipی شامل دو فیلد متنی به صفحه اضافه شود ، به مثال دقت نمایید :</p>
<p><!--c1--></p>
<div dir="ltr"><!--ec1-->var container_mc:MovieClip = new MovieClip();<br />
var text1_txt:TextField = new TextField();<br />
var text2_txt:TextField = new TextField();</div>
<div dir="ltr">container_mc.addChild(text1_txt);</div>
<div dir="ltr">container_mc.addChild(text2_txt);</div>
<div dir="ltr">text1_txt.text = &#8220;This text field will not appear on the screen-PCSEVEN&#8221;;</div>
<div dir="ltr">text2_txt.text = &#8220;Except if we add its container to the main timeline display list-PCSEVEN&#8221;;</div>
<div dir="ltr">addChild(container_mc);<!--c2--></div>
<p><!--ec2-->امیداورم تا اینجا تونسته باشم مفهوم های جدید در اکشن اسکریپت ۳ رو به خوبی برسونم ، در صورتی که سوالی بود در همین جا مطرح نمایید &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1388/09/display-list-%d9%88-%d8%a7%da%a9%d8%b4%d9%86-%d8%a7%d8%b3%da%a9%d8%b1%db%8c%d9%be%d8%aa-3/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
