<?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; Object</title>
	<atom:link href="http://blog.iflashlord.com/tag/object/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.iflashlord.com</link>
	<description>دست نوشته های یک پادشاه فلش</description>
	<lastBuildDate>Wed, 11 Jan 2012 12:09:13 +0000</lastBuildDate>
	<language>fa</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>اعمال StyleSheet داخلی به فیلد متنی</title>
		<link>http://blog.iflashlord.com/1390/08/%d8%a7%d8%b9%d9%85%d8%a7%d9%84-stylesheet-%d8%af%d8%a7%d8%ae%d9%84%db%8c-%d8%a8%d9%87-%d9%81%db%8c%d9%84%d8%af-%d9%85%d8%aa%d9%86%db%8c/</link>
		<comments>http://blog.iflashlord.com/1390/08/%d8%a7%d8%b9%d9%85%d8%a7%d9%84-stylesheet-%d8%af%d8%a7%d8%ae%d9%84%db%8c-%d8%a8%d9%87-%d9%81%db%8c%d9%84%d8%af-%d9%85%d8%aa%d9%86%db%8c/#comments</comments>
		<pubDate>Fri, 18 Nov 2011 23:10:10 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[ادوبی فلش]]></category>
		<category><![CDATA[اکشن اسکریپت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[سی اس اس]]></category>
		<category><![CDATA[actionscript 3]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[color]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[css.setStyle]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Import]]></category>
		<category><![CDATA[INTERNAL]]></category>
		<category><![CDATA[Object]]></category>
		<category><![CDATA[setStyle]]></category>
		<category><![CDATA[String]]></category>
		<category><![CDATA[StyleSheet]]></category>
		<category><![CDATA[text]]></category>
		<category><![CDATA[اکشن اسکریپت 3]]></category>
		<category><![CDATA[داخلی]]></category>
		<category><![CDATA[فلش]]></category>
		<category><![CDATA[قالب بندی]]></category>
		<category><![CDATA[پاراگراف]]></category>

		<guid isPermaLink="false">http://blog.iflashlord.com/?p=1629</guid>
		<description><![CDATA[در این مطلب به ساخت StyleSheet داخلی (INTERNAL) در اکشن اسکریپت ۳ می پردازیم ، این موارد برای زمانی که شما نیازی به فایل CSS خارجی نداشته باشید و بخواهید از فرامین قالب بندی CSS درون اکشن اسکریپت استفاده کنید، برای این کار از کلاس StyleSheet استفاده می کنیم. در ابتدا ما کلاس مورد نیاز [...]]]></description>
			<content:encoded><![CDATA[<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">
	<img src="http://blog.iflashlord.com/wp-content/uploads/2011/10/css_external_as3_iflashlord.jpg" alt="iflashlord.com" />
	</p><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در این مطلب به ساخت <a title="اعمال یک StyleSheet خارجی به فیلد متنی" href="http://blog.iflashlord.com/1390/08/%d8%a7%d8%b9%d9%85%d8%a7%d9%84-%db%8c%da%a9-stylesheet-%d8%ae%d8%a7%d8%b1%d8%ac%db%8c-%d8%a8%d9%87-%d9%81%db%8c%d9%84%d8%af-%d9%85%d8%aa%d9%86%db%8c/">StyleSheet </a>داخلی (INTERNAL) در اکشن اسکریپت ۳ می پردازیم ، این موارد برای زمانی که شما نیازی به <a title="اعمال یک StyleSheet خارجی به فیلد متنی" href="http://blog.iflashlord.com/1390/08/%d8%a7%d8%b9%d9%85%d8%a7%d9%84-%db%8c%da%a9-stylesheet-%d8%ae%d8%a7%d8%b1%d8%ac%db%8c-%d8%a8%d9%87-%d9%81%db%8c%d9%84%d8%af-%d9%85%d8%aa%d9%86%db%8c/">فایل CSS خارجی </a>نداشته باشید و بخواهید از فرامین قالب بندی CSS درون اکشن اسکریپت استفاده کنید، برای این کار از کلاس <a title="اعمال یک StyleSheet خارجی به فیلد متنی" href="http://blog.iflashlord.com/1390/08/%d8%a7%d8%b9%d9%85%d8%a7%d9%84-%db%8c%da%a9-stylesheet-%d8%ae%d8%a7%d8%b1%d8%ac%db%8c-%d8%a8%d9%87-%d9%81%db%8c%d9%84%d8%af-%d9%85%d8%aa%d9%86%db%8c/">StyleSheet </a>استفاده می کنیم.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span id="more-1629"></span>در ابتدا ما کلاس مورد نیاز را import می کنیم</p>
<pre class="brush: as3; title: ; notranslate">
import flash.text.StyleSheet;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در مرحله بعد متغییر css را تعریف می کنیم و نوع آن را StyleSheet قرار می دهیم و یک نمونه از کلاس StyleSheet را به عنوان مقدار آن قرار می دهیم.</p>
<pre class="brush: as3; title: ; notranslate">
var css:StyleSheet = new StyleSheet();
css.setStyle(&quot;p&quot;, {color: &quot;#FF0000&quot;});

example_txt.styleSheet = css;
example_txt.text = &quot;&lt;p&gt;iflashlord.com&lt;/p&gt; sample text!&quot;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">سپس با استفاده از متد <strong>setStyle</strong> فرامین مربوطه به <strong>css</strong> را مقدار دهی می کنیم ، در این مثال به تگ پاراگراف در <strong>HTML</strong> می باشد که با (<strong>p</strong>) مشخص می شود ، خصوصیت <strong>color</strong> که مربوطه به رنگ می باشد به آن نسبت داده شده است. توجه نمایید مقدارهای هر تگ یا کلاس یا شناسه در <strong>CSS</strong> به صورت یک <strong>Object</strong> به عنوان آرگمان دوم متد<strong> setStyle</strong> مقدار دهی می شود. آرگمان اول نیز به صورت رشته متنی (<strong>String</strong>) می باشد و مربوطه به نام تگ (به طور مثال <strong>p</strong>) نام کلاس (به طور مثال <strong dir="ltr">.test</strong> ) و نام شناسه (به طور مثال <strong dir="ltr">#test</strong> ) و&#8230; می باشد.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در مرحله بعد متغیر <strong>css</strong> را به عنوان متد <strong>styleSheet</strong> مربوطه به تکست فیلد مقدار دهی می کنیم.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">و در مرحله آخر محتوای متنی <strong>HTML</strong> خود را به فیلد متنی نسبت می دهیم و نتیجه را مشاهده می کنیم ، طبق کد بالا می بایست متن <strong>iflashlord.com</strong> به صورت قرمز (<strong>FF0000</strong>) چاپ شود و باقی متون با رنگ پیش فرض تکست فیلد.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">با کمک این کد می توانید قالب بندی مربوطه به بخش های مختلف را توسط کدهای اکشن اسکریپت و <strong>css</strong> با دستی بازتر انجام دهید.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1390/08/%d8%a7%d8%b9%d9%85%d8%a7%d9%84-stylesheet-%d8%af%d8%a7%d8%ae%d9%84%db%8c-%d8%a8%d9%87-%d9%81%db%8c%d9%84%d8%af-%d9%85%d8%aa%d9%86%db%8c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>کلاس‌های Dynamic در اکشن اسکریپت ۳</title>
		<link>http://blog.iflashlord.com/1390/08/%da%a9%d9%84%d8%a7%d8%b3%e2%80%8c%d9%87%d8%a7%db%8c-dynamic-%d8%af%d8%b1-%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/1390/08/%da%a9%d9%84%d8%a7%d8%b3%e2%80%8c%d9%87%d8%a7%db%8c-dynamic-%d8%af%d8%b1-%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>Fri, 04 Nov 2011 01:23:56 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[ادوبی فلش]]></category>
		<category><![CDATA[اکشن اسکریپت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[actionscript 3]]></category>
		<category><![CDATA[Array]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Class]]></category>
		<category><![CDATA[Container]]></category>
		<category><![CDATA[dynamic]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Function]]></category>
		<category><![CDATA[instance]]></category>
		<category><![CDATA[method]]></category>
		<category><![CDATA[new Object]]></category>
		<category><![CDATA[newProperty]]></category>
		<category><![CDATA[Object]]></category>
		<category><![CDATA[package]]></category>
		<category><![CDATA[property]]></category>
		<category><![CDATA[public dynamic class]]></category>
		<category><![CDATA[اکشن اسکریپت 3]]></category>
		<category><![CDATA[صفت]]></category>
		<category><![CDATA[فلش]]></category>
		<category><![CDATA[پویا]]></category>
		<category><![CDATA[کلاس پویا]]></category>
		<category><![CDATA[کلاس‌]]></category>

		<guid isPermaLink="false">http://blog.iflashlord.com/?p=1531</guid>
		<description><![CDATA[ویژگی پویایی، از جمله امکاناتی است که در گذشته در زبان اکشن اسکریپت وجود نداشت، اما از نسخه ۳ و FP9 به آن اضافه شد. تنها تفاوت یک کلاس پویا، با کلاس غیر پویا در این است که کلاس پویا می‌تواند در زمان اجرا، صفات جدیدی را بپذیرد. در واقع به سادگی مقدار دهی به [...]]]></description>
			<content:encoded><![CDATA[<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">
	<img src="http://blog.iflashlord.com/wp-content/uploads/2011/11/dynamic_class_as3_iflashlord.jpg" alt="iflashlord.com" />
	</p><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">ویژگی پویایی، از جمله امکاناتی است که در گذشته در زبان اکشن اسکریپت وجود نداشت، اما از نسخه ۳ و FP9 به آن اضافه شد.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">تنها تفاوت یک کلاس پویا، با کلاس غیر پویا در این است که کلاس پویا می‌تواند در زمان اجرا، صفات جدیدی را بپذیرد. در واقع به سادگی مقدار دهی به یک متغیر، می‌توان یک صفت جدید (property یا function یا حتی object) را به اشیائی که از یک کلاس پویا ایجاد شده‌اند اضافه نمود.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span id="more-1531"></span></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">این تفاوت کوچک در عمل، کار و تعامل با کلاس‌های پویا را تا حد زیادی ساده می‌کند. از آنجا که شئ‌گرایی در AS 3.0 حد و مرز ندارد، در حین طراحی یک برنامه واقعی به دفعات اتفاق می‌افتد که بخواهیم صفات جدیدی را در زمان اجرا و تحت شرایطی خاص، به یک شئ اضافه نموده و یا از آن به عنوان یک حامل یا ظرف (Container) استفاده کنیم.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>تعریف کلاس پویا:</strong></p>
<pre class="brush: as3; title: ; notranslate">
package {
public dynamic class TestClass {
//defenition
}
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>اضافه کردن صفت در زمان اجرا:</strong></p>
<pre class="brush: as3; title: ; notranslate">
var dynaObject: TestClass = new TestClass();

var obj:Object = new Object();
var idx:Array = new Array(1,2,3,4,5,6,7,8,9);

dynaObject.propTest = &quot;newProperty&quot;;
dynaObject.obj = obj;
dynaObject[&quot;idx&quot;] = idx;

trace(dynaObject.propTest, dynaObject.obj, dynaObject.idx);
//newProperty [object Object] 1,2,3,4,5,6,7,8,9
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>در استفاده از کلاس‌های پویا این دو نکته را به خاطر داشته باشید که:</strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">- صفات پویا به instance اضافه می‌شوند نه خود کلاس.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">- ویژگی پویایی در کلاس‌ها به ارث برده نمی‌شود.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><em>توضیح: مقصود از &#8220;صفت&#8221; در AS 3.0، هم property و هم function یا method است.</em></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><a href="http://blog.mshams.ir/2011/06/dynamic-actionscript-30.html" target="_blank">+منبع</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1390/08/%da%a9%d9%84%d8%a7%d8%b3%e2%80%8c%d9%87%d8%a7%db%8c-dynamic-%d8%af%d8%b1-%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>2</slash:comments>
		</item>
		<item>
		<title>بهینه سازی فلش &#8211; انجماد اشیاء</title>
		<link>http://blog.iflashlord.com/1390/05/%d8%a8%d9%87%db%8c%d9%86%d9%87-%d8%b3%d8%a7%d8%b2%db%8c-%d9%81%d9%84%d8%b4-%d8%a7%d9%86%d8%ac%d9%85%d8%a7%d8%af-%d8%a7%d8%b4%db%8c%d8%a7%d8%a1/</link>
		<comments>http://blog.iflashlord.com/1390/05/%d8%a8%d9%87%db%8c%d9%86%d9%87-%d8%b3%d8%a7%d8%b2%db%8c-%d9%81%d9%84%d8%b4-%d8%a7%d9%86%d8%ac%d9%85%d8%a7%d8%af-%d8%a7%d8%b4%db%8c%d8%a7%d8%a1/#comments</comments>
		<pubDate>Sun, 31 Jul 2011 08:22:35 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[ادوبی ایر]]></category>
		<category><![CDATA[ادوبی فلش]]></category>
		<category><![CDATA[اکشن اسکریپت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[addChild]]></category>
		<category><![CDATA[ADDED_TO_STAGE]]></category>
		<category><![CDATA[addEventListener]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[contains]]></category>
		<category><![CDATA[CPU-intensive]]></category>
		<category><![CDATA[currentTarget]]></category>
		<category><![CDATA[Dictionary]]></category>
		<category><![CDATA[Event.ENTER_FRAME]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[for each]]></category>
		<category><![CDATA[Freezing]]></category>
		<category><![CDATA[Keyboard.LEFT]]></category>
		<category><![CDATA[Keyboard.RIGHT]]></category>
		<category><![CDATA[KeyboardEvent]]></category>
		<category><![CDATA[keyCode]]></category>
		<category><![CDATA[MouseEvent]]></category>
		<category><![CDATA[MouseEvent.CLICK]]></category>
		<category><![CDATA[Object]]></category>
		<category><![CDATA[Objects]]></category>
		<category><![CDATA[optimize]]></category>
		<category><![CDATA[removeChild]]></category>
		<category><![CDATA[REMOVED_FROM_STAGE]]></category>
		<category><![CDATA[Unfreezing]]></category>
		<category><![CDATA[اشیاء]]></category>
		<category><![CDATA[انجماد]]></category>
		<category><![CDATA[بهینه سازی فلش]]></category>
		<category><![CDATA[فلش]]></category>

		<guid isPermaLink="false">http://blog.iflashlord.com/?p=952</guid>
		<description><![CDATA[بهینه سازی در فلش یک اصل مهم به حساب می آید و افزایش و کار بر روی آن برای توسعه دهندگان فلش امری الزامی است. به عنوان یک توسعه دهنده فلش و به عنوان کسی که برای آینده این نرم افزار بزرگ احساس مسئولیت می کند ، ما وظیفه داریم در ساخت عناصر فلش که [...]]]></description>
			<content:encoded><![CDATA[<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">
	<img src="http://blog.iflashlord.com/wp-content/uploads/2011/04/optimaize_flash_iflashlord.jpg" alt="iflashlord.com" />
	</p><p style="text-align: right;">بهینه سازی در فلش یک اصل مهم به حساب می آید و افزایش و کار بر روی آن برای توسعه دهندگان فلش امری الزامی است. به عنوان یک توسعه دهنده فلش و به عنوان کسی که برای آینده این نرم افزار بزرگ احساس مسئولیت می کند ، ما وظیفه داریم در ساخت عناصر فلش که کارایی بهتری دارند پیش گام باشیم و همواره بهترین و بهینه ترین روش را استفاده کنیم. در این مجموعه آموزشی بهینه سازی فلش به نکات مهم برای مدیریت بر عناصر و حافظه ها … می پردازیم و تلاش می کنیم که بتوانیم با استفاده از نکات ارائه شده خروجی بهینه تر و سبک تری از پروژه فلش خود داشته باشیم.</p>
<p style="text-align: right;"><strong>بخش هفتم &#8211; انجماد (ثابت کردن) اشیاء و آزاد کردن اشیاء</strong></p>
<p title="بهینه سازی فلش – آزاد سازی حافظه"><strong></strong>برای بهینه سازی کد خود ، سعی کنید همیشه ازثابت کردن (Freeze) و آزاد کردن (Unfreeze) اشیاء استفاده کنید. این موارد برای همه اشیاء مهم هستند ، اما به صورت ویژه برای Display Object ها مهم هستند. حتی اگر شی نمایشی (<a title="بهینه سازی فلش – Display Objects" href="http://blog.iflashlord.com/1390/01/%d8%a8%d9%87%db%8c%d9%86%d9%87-%d8%b3%d8%a7%d8%b2%db%8c-%d9%81%d9%84%d8%b4-display-objects/">Display Object</a>) مدت زیادی در لیست نمایشی (<a title="Display List و اکشن اسکریپت ۳" href="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/">Display List</a>) نباشد و در انتظار <a title="بهینه سازی فلش – آزاد سازی حافظه" href="http://blog.iflashlord.com/1390/02/%d8%a8%d9%87%db%8c%d9%86%d9%87-%d8%b3%d8%a7%d8%b2%db%8c-%d9%81%d9%84%d8%b4-%d8%a2%d8%b2%d8%a7%d8%af-%d8%b3%d8%a7%d8%b2%db%8c-%d8%ad%d8%a7%d9%81%d8%b8%d9%87/">جمع آوری زباله (</a><a title="بهینه سازی فلش – آزاد سازی حافظه" href="http://blog.iflashlord.com/1390/02/%d8%a8%d9%87%db%8c%d9%86%d9%87-%d8%b3%d8%a7%d8%b2%db%8c-%d9%81%d9%84%d8%b4-%d8%a2%d8%b2%d8%a7%d8%af-%d8%b3%d8%a7%d8%b2%db%8c-%d8%ad%d8%a7%d9%81%d8%b8%d9%87/">Garbage collection</a><a title="بهینه سازی فلش – آزاد سازی حافظه" href="http://blog.iflashlord.com/1390/02/%d8%a8%d9%87%db%8c%d9%86%d9%87-%d8%b3%d8%a7%d8%b2%db%8c-%d9%81%d9%84%d8%b4-%d8%a2%d8%b2%d8%a7%d8%af-%d8%b3%d8%a7%d8%b2%db%8c-%d8%ad%d8%a7%d9%81%d8%b8%d9%87/">)</a> باشد ، <strong>این اشیاء می توانند هنوز حافظه و  CPU را درگیر خود کنند.</strong></p>
<p style="text-align: right;"><span id="more-952"></span></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">برای مثال ، ما می توانید با استفاده از Event.ENTER_FRAME رویدادی کیبورد را کنترل کنید ، در نتیجه شما امکان freeze کردن و unfreeze کردن را با رویداد های Event.REMOVE_FROM_STAGE و Event.ADDED_TO_STAGE در اختیار دارید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">مثال زیر نمونه این کار را در قالب Movie Clip ی که در حال پخش در stage هست و با کنترلر کیبورد در تعامل می باشد ، را مشاهده می کنید :</p>
<pre class="brush: as3; title: ; notranslate">

// تعریف رویداد های کیبورد

stage.addEventListener(KeyboardEvent.KEY_DOWN, keyIsDown);

stage.addEventListener(KeyboardEvent.KEY_UP, keyIsUp);

// ساخت یک شی برای ذخیره کردن کلید تعیین شده

var keys:Dictionary = new Dictionary(true);

function keyIsDown(e:KeyboardEvent):void
{

	// به یاد داشتن کلیدی که فشرده شده است

	keys[e.keyCode] = true;

	if (e.keyCode == Keyboard.LEFT || e.keyCode == Keyboard.RIGHT)
	{

		runningBoy.play();

	}

}

function keyIsUp(e:KeyboardEvent):void
{

	// به یاد داشتن کلیدی که بعد از فشرده شدن رها شده است

	keys[e.keyCode] = false;

	for each (var value:Boolean in keys)
	{

		if (value)
		{
			return;
		}
	}

	runningBoy.stop();

}

runningBoy.addEventListener(Event.ENTER_FRAME, handleMovement);

runningBoy.stop();

var currentState:Number = runningBoy.scaleX;

var speed:Number = 15;

function handleMovement(e:Event):void
{

	if (keys[Keyboard.RIGHT])
	{

		e.currentTarget.x +=  speed;

		e.currentTarget.scaleX = currentState;

	}
	else if (keys[Keyboard.LEFT])
	{

		e.currentTarget.x -=  speed;

		e.currentTarget.scaleX =  -  currentState;

	}

}
</pre>
<p style="text-align: right;">زمانی که روی دکمه مربوطه به حذف با نام  removeBtn کلیک شود ، Movie Clip از لیست نمایش (Display List) حذف می شود:</p>
<pre class="brush: as3; title: ; notranslate">

// نمایش یا حذف مووی کلیپ توسط رویداد های دکمه های مربوطه

showBtn.addEventListener(MouseEvent.CLICK,showIt);

removeBtn.addEventListener(MouseEvent.CLICK,removeIt);

function showIt(e:MouseEvent):void
{

	addChild(runningBoy);

}

function removeIt(e:MouseEvent):void
{

	// حذف مووی کلیپ در صورتی موجود بودن

	if (contains(runningBoy))
	{
		removeChild(runningBoy);
	}

}
</pre>
<p style="text-align: right;">زمانی که Movie Clip از لیست نمایش حذف می شود ، Movie Clip هنوز رویداد Event.ENTER_FRAME را ارسال می کند. Movie Clip اجرا می شود ولی رندر (Render) نمی شود. برای ایجاد دستگیره به این وضعیت به صورت درست ، می بایست رویداد های دیگری را برای حذف تعریف کنیم ، برای پیش گیری از فشاری که این مساله به CPU وارد می آورد :</p>
<pre class="brush: as3; title: ; notranslate">

// Listen to Event.ADDED_TO_STAGE and Event.REMOVED_FROM_STAGE

runningBoy.addEventListener(Event.ADDED_TO_STAGE,activate);

runningBoy.addEventListener(Event.REMOVED_FROM_STAGE,deactivate);

function activate(e:Event):void
{

	// باز نشانی همه چیز

	e.currentTarget.addEventListener(Event.ENTER_FRAME,handleMovement);

}

function deactivate(e:Event):void
{

	//فریز کردین مووی کلیپ برای داشتن کمترین مصرف از سی پی یو در حالتی که مووی کلیپ حذف شده است

	e.currentTarget.removeEventListener(Event.ENTER_FRAME,handleMovement);

	e.currentTarget.stop();

}
</pre>
<p style="text-align: right;">زمانی که دوباره روی دکمه showBtn کلیک می شود ، Movie Clip باز نشانی می شود و رویداد Event.ENTER_FRAME دوباره به آن داده می شود ، و کیبورد به صورت درست باز هم امکان کنترل Movie Clip را دارد.</p>
<blockquote>
<p style="text-align: right;">نکته : اگر شی نمایشی از لیست نمایش حذف شده است ،به مرجع آن مقدار null (تهی) بدهید تا اطمینان داشته باشید که شی freeze شده است. اگر جمع آورنده زباله (garbage collector) اجرا نشود ، شی همچنان به مصرف حافظه و پردازش CPU ادامه می دهد، حتی اگر شی نمایش داده نشود.</p>
</blockquote>
<p style="text-align: right;"><strong>برای اطمینان از این که شی کمترین مصرف حافظه و پردازش CPU را دارد ، می بایست زمانی که شی از لیست نمایش حذف می شود ، کاملا freeze شده باشد.</strong></p>
<blockquote>
<p style="text-align: right;">از نسخه ۱۰ فلش پلیر ، در صورتی که پخش کننده اصلی در فریم ها به فریم خالی برسد ، شی نمایشی به صورت خودکار freeze می شود، حتی اگر شما هیچ کاری برای انجماد (freeze) کردن اشیاء انجام ندهید.</p>
</blockquote>
<p style="text-align: right;">مفهوم انجماد در هنگام بارگزاری از دور(یا خارج) توسط کلاس <a title="بهینه سازی فلش – unloadAndStop در فلش پلیر ۱۰" href="http://blog.iflashlord.com/1390/03/%d8%a8%d9%87%db%8c%d9%86%d9%87-%d8%b3%d8%a7%d8%b2%db%8c-%d9%81%d9%84%d8%b4-unloadandstop-in-flash-player-10/">Loader </a>نیز مهم می باشد. زمانی که از کلاس Loader توسط فلش پلیر ۹ استفاده می کنید ، نیاز هست که به صورت دستی محتوا را در زمانی که رویداد Event.UNLOAD توسط شی LoaderInfo ارسال می شود freeze کنید. هر شی ی می بایست به صورت دستی freeze شود ، که کار سخت و بیهوده می باشد.</p>
<p style="text-align: right;"><strong>فلش پلیر ۱۰</strong> متدی جدیدی برای کلاس Loader با نام <a title="بهینه سازی فلش – unloadAndStop در فلش پلیر ۱۰" href="http://blog.iflashlord.com/1390/03/%d8%a8%d9%87%db%8c%d9%86%d9%87-%d8%b3%d8%a7%d8%b2%db%8c-%d9%81%d9%84%d8%b4-unloadandstop-in-flash-player-10/">unloadAndStop() </a>معرفی کرده است. که این متد به شما این امکان را می دهد که فایل swf در زمان unload به صورت خودکار تمامی اشیاء بارگزاری شده را  freeze کند و فلش پلیر را مجبور به اجرای جمع آورنده زباله (<a title="بهینه سازی فلش – آزاد سازی حافظه" href="http://blog.iflashlord.com/1390/02/%d8%a8%d9%87%db%8c%d9%86%d9%87-%d8%b3%d8%a7%d8%b2%db%8c-%d9%81%d9%84%d8%b4-%d8%a2%d8%b2%d8%a7%d8%af-%d8%b3%d8%a7%d8%b2%db%8c-%d8%ad%d8%a7%d9%81%d8%b8%d9%87/">garbage collection</a>) بعد از عمل freeze کند.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>در کد زیر یک فایل SWF توسط متد unload() بعد از بارگزاری شدن unload می شود ، که نیاز به پردازش بیشتر و freeze دستی دارد :</strong></p>
<pre class="brush: as3; title: ; notranslate">

var loader:Loader = new Loader();

loader.load( new URLRequest ( &quot;content.swf&quot; ) );

addChild( loader );

stage.addEventListener( MouseEvent.CLICK, unloadSWF );

function unloadSWF( e:MouseEvent ):void
{

	// Unload the SWF file with no automatic object deactivation

	// All deactivation must be processed manually

	loader.unload();

}
</pre>
<p style="text-align: right;"><strong>بهترین راه استفاده از متد unloadAndStop() ، که یک دستگیره بومی برای اجبار جمع آوری زباله در روند اجرا ایجاد می کند ، می باشد:</strong></p>
<pre class="brush: as3; title: ; notranslate">

var loader:Loader = new Loader();

loader.load( new URLRequest ( &quot;content.swf&quot; ) );

addChild( loader );

stage.addEventListener( MouseEvent.CLICK, unloadSWF );

function unloadSWF( e:MouseEvent ):void
{

	// Unload the SWF file with automatic object deactivation

	// All deactivation is handled automatically

	loader.unloadAndStop();

}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>در زیر به فهرستی از مواردی که unloadAndStop آنها را برای فایل های swf بارگزاری شده آماده می کند را مشاهده می کنید :</strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>*</strong> ایست کردن تمامی MovieClip ها<br />
<strong>*</strong> ایست کردن تمامی صداهای در حال پخش و Stream (پخش در جریان)<br />
<strong>*</strong> ایست و حذف همه تایمر (Timer) های استفاده شده<br />
<strong>*</strong> حذف همه شنونده های رویداد عمومی ، برای enterFrame , exitFrame , frameconstructed , activeate , deactivate<br />
<strong>*</strong> حدف همه شنونده های مربوطه به  stage که توسط فرزند (child) ایجاده شده است<br />
<strong>* </strong>بستن همه NetConnection ها و NetStream ها (Video.attachNetStream/attachCamera(0) – Microphone.setLoopback(0))<br />
<strong>*</strong> حدف فونت های AS3 از جدول فونت های عمومی<br />
<strong>*</strong> ایست ؛ socket ها ، xmlsocket ها ،دانلودهای filerefrence ، و دیگر اشاء مربوطه به دانلود (grandchildren (سطح نوه والد) ) و…<br />
<strong>* </strong>آزاد کردن bitmap های در ارتباط با cacheAsBitmap و filterها و…</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">&nbsp;</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">موفق و پیروز باشید.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1390/05/%d8%a8%d9%87%db%8c%d9%86%d9%87-%d8%b3%d8%a7%d8%b2%db%8c-%d9%81%d9%84%d8%b4-%d8%a7%d9%86%d8%ac%d9%85%d8%a7%d8%af-%d8%a7%d8%b4%db%8c%d8%a7%d8%a1/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>بهینه سازی فلش &#8211; آزاد سازی حافظه</title>
		<link>http://blog.iflashlord.com/1390/02/%d8%a8%d9%87%db%8c%d9%86%d9%87-%d8%b3%d8%a7%d8%b2%db%8c-%d9%81%d9%84%d8%b4-%d8%a2%d8%b2%d8%a7%d8%af-%d8%b3%d8%a7%d8%b2%db%8c-%d8%ad%d8%a7%d9%81%d8%b8%d9%87/</link>
		<comments>http://blog.iflashlord.com/1390/02/%d8%a8%d9%87%db%8c%d9%86%d9%87-%d8%b3%d8%a7%d8%b2%db%8c-%d9%81%d9%84%d8%b4-%d8%a2%d8%b2%d8%a7%d8%af-%d8%b3%d8%a7%d8%b2%db%8c-%d8%ad%d8%a7%d9%81%d8%b8%d9%87/#comments</comments>
		<pubDate>Sun, 15 May 2011 20:12:39 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[ادوبی ایر]]></category>
		<category><![CDATA[ادوبی فلش]]></category>
		<category><![CDATA[اکشن اسکریپت]]></category>
		<category><![CDATA[BitmapData]]></category>
		<category><![CDATA[dispose]]></category>
		<category><![CDATA[disposeXML]]></category>
		<category><![CDATA[Garbage collection]]></category>
		<category><![CDATA[garbage collector]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[Object]]></category>
		<category><![CDATA[System.totalMemory]]></category>
		<category><![CDATA[آزاد سازی حافظه]]></category>
		<category><![CDATA[بهینه سازی]]></category>
		<category><![CDATA[فلش]]></category>

		<guid isPermaLink="false">http://blog.iflashlord.com/?p=951</guid>
		<description><![CDATA[بهینه سازی در فلش یک اصل مهم به حساب می آید و افزایش و کار بر روی آن برای توسعه دهندگان فلش امری الزامی است. به عنوان یک توسعه دهنده فلش و به عنوان کسی که برای آینده این نرم افزار بزرگ احساس مسئولیت می کند ، ما وظیفه داریم در ساخت عناصر فلش که [...]]]></description>
			<content:encoded><![CDATA[<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">
	<img src="http://blog.iflashlord.com/wp-content/uploads/2011/04/optimaize_flash_iflashlord.jpg" alt="iflashlord.com" />
	</p><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">بهینه سازی در فلش یک اصل مهم به حساب می آید و افزایش و کار بر روی آن      برای توسعه دهندگان فلش امری الزامی است. به عنوان یک توسعه دهنده فلش و     به  عنوان کسی که برای آینده این نرم افزار بزرگ احساس مسئولیت می کند ،    ما   وظیفه داریم در ساخت عناصر فلش که کارایی بهتری دارند پیش گام باشیم  و     همواره بهترین و بهینه ترین روش را استفاده کنیم. در این مجموعه  آموزشی     بهینه سازی فلش به نکات مهم برای مدیریت بر عناصر و حافظه ها …  می   پردازیم و   تلاش می کنیم که بتوانیم با استفاده از نکات ارائه شده  خروجی   بهینه تر و   سبک تری از پروژه فلش خود داشته باشیم.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>بخش پنجم &#8211; آزاد سازی حافظه (Memory)</strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">شما نمی توانید جمع آور زباله (garbage collector) را به صورت مستقیم در فلش پلیر اجرا کنید. برای این که اطمینان پیدا کنید که یک شی جمع آوری شده است می بایست تمامی منابع آن را حذف کنید. به یاد داشته باشید که عملگر مورد استفاده در اکشن اسکریپت ۱ و ۲ رفتار متفاوتی در اکشن اسکریپت ۳ دارد. این مورد را تنها می توان برای حذف خصوصیات پویا (Dynamic) از یک شی پویا استفاده نمود.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>توضیح : </strong><em>جمع آوری زباله (Garbage collection)</em> یک اصطلاح می باشد که به عمل پاک سازی و جمع آوری اشیاء  (object) هایی که استفاده ای نمی شوند و حافظه را اشغال کرده اند ، اطلاق می شود.<strong><br />
</strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span id="more-951"></span></strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>تذکر:</strong> شما می توانید جمع آوری کننده زباله (garbage collector) را در ادوبی ایر (Adobe AIR) و نسخه  (Debug) فلش پلیر به صورت مستقیم فراخوانی کنید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">به عنوان مثلا ،در کد زیر منابع یک Sprite را برابر با null قرار می دهیم ؛ و با این کار جمع آور زباله آن را از حافظه حذف می کند.</p>
<pre class="brush: as3; title: ; notranslate">

var mySprite:Sprite = new Sprite();

// منابع مربوطه با نال (تهی) مقدار دهی شد و در نتیجه جمع آور زباله این مورد را از حافظه حدف می کند.
mySprite = null;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">به یاد داشته باشید زمانی که به یک شی مقدار null را می دهید ، لزوما از حافظه حذف نخواهد شد. بعضی اوقات اگر حافظه موجود کمتر از مقدار کافی به نظر نرسد جمع آور زباله (garbage collector) اجرا نمی شود. <strong>جمع آوری زباله (Garbage collection) قابل پیشبینی نیست.</strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>تخصیص درست حافظه ، ترجیح داده می شود به حذف شی (obejct) و آغاز جمع آوری زباله. </strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">زمانی که جمع آورنده زباله (garbage collector) اجرا می شود ،فهرستی از اشیاء ی که جمع آوری نشده است را ایجاد می کند. <strong>حال اشیاء غیر فعال درون فهرست که </strong><strong>دیگر استفاده نمی شوند</strong><strong> ، با تشخیص منابع اشیاء در دیگر اشیاء ، مشخص می شود ، </strong>اشیاء غیرفعال<strong> </strong>شناسایی شده از این راه حذف می شوند.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در برنامه های بزرگ ، این فرایند می تواند باعث تشدید فشار بر پردازنده (CPU-intensive) ، تاثیر بر کارایی برنامه (performance) و کاهش قابل توجه سرعت در برنامه شود. سعی کنید به منظور محدود کردن جمع آوری زباله (garbage collection) تا آن جا که امکان پذیر است از ،<a title="بهینه سازی فلش – استفاده دوباره از Object ها" href="http://blog.iflashlord.com/1390/02/%d8%a8%d9%87%db%8c%d9%86%d9%87-%d8%b3%d8%a7%d8%b2%db%8c-%d9%81%d9%84%d8%b4-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%d8%af%d9%88%d8%a8%d8%a7%d8%b1%d9%87-%d8%a7%d8%b2-object-%d9%87%d8%a7/" target="_blank"> استفاده دوباره از اشیاء</a> استفاده کنید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">همچنین از دادن مقدار null به منابع بی استفاده ، در زمانی که امکان دارد ، استفاده کنید. با این کار جمع آورنده زباله (garbage collector) پردازش کمتری برای پیدا کردن اشیاء خواهد داشت. می توان به جمع آوری زباله (garbage collection) مثل بیمه حافظه مصرفی یک برنامه نگاه کرد ، و در ضمن همیشه سعی کنید به مدیریت طول عمر اشیاء (در صورت امکان) دقت کنید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>تذکر :</strong> تعیین یک مرجع از یک شی نمایشی (display object) با مقدار null تضمینی برای این که آن شی منجمد (freeze) شده باشد نیست. شی همچنان به مصرف پردازنده (CPU) در سیکل زمانی  ادامه می دهد تا زمانی که جمع آوری زباله انجام شود. <strong>قبل از مقدار دهی منابع به null ،  اطمینان حاصل کنید که شی شما به درسی غیر فعال شده است.</strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">جمع آورنده زباله را می توانید با استفاده از متد System.gc() فراخوانی کنید ، البته توجه داشته باشید این فراخوانی مستقیم مربوطه به Adobe Air و فلش پلیر نسخه Debug می باشد. <a href="http://help.adobe.com/en_US/flashbuilder/using/WS6f97d7caa66ef6eb1e63e3d11b6c4d0d21-7e46.html" target="_blank">Profiler toolbar</a> ی که همراه برنامه Adobe Flash Builder می باشد به شما این امکان را می دهد که به صورت دستی جمع آور زباله (garbage collector) را شروع کنید. با اجرای جمع آورنده زباله شما این امکان را دارید که مشاهده کنید که چگونه برنامه شما پاسخ می دهد و آیا اشیاء به درستی از حافظه حذف شده است یا خیر.<strong> </strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>تذکر : </strong>اگر یک شی به عنوان یک شنونده (listener) رویداد استفاده شده است ، شی دیگر می تواند به آن ارجاع شود. اگر این حالت باشد ، می بایست رویداد شنوندها توسط متد removeEventListener() قبل از مقدار دهی null به شی حذف شود.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">خوشبختانه ، مقدار حافظه استفاده شده توسط bitmap ها را می توان مستقیم کاهش داد. به عنوان مثل کلاس BitmapData دارای متد dispose() می باشد. در مثال بعدی ، یک BitmapData ایجاد می کنیم (۱.۸MB  حافظه). حافظه جاری به مقدار ۱.۸MB افزایش پیدا می کند. توسط خصوصیت System.totalMemory می توانیم خروجی حافظه اشغال شده را مشاهده کنیم :</p>
<pre class="brush: as3; title: ; notranslate">

trace(System.totalMemory / 1024);
// خروجی : ۴۳۱۰۰

//  ساخت یک نمونه BitmapData
var image:BitmapData = new BitmapData(800, 600);

trace(System.totalMemory / 1024);
// خروجی : ۴۴۹۶۴
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در مثال بعدی BitmapData ساخته شده به صورت دستی از حافظه حذف می شود (با کمک متد dispose) و دوباره مقدار حافظه چک می شود :</p>
<pre class="brush: as3; highlight: [9,10]; title: ; notranslate">

trace(System.totalMemory / 1024);
// خروجی: ۴۳۱۰۰
//  ساخت یک نمونه BitmapData
var image:BitmapData = new BitmapData(800, 600);

trace(System.totalMemory / 1024);
// خروجی : ۴۴۹۶۴

image.dispose();
image = null;

trace(System.totalMemory / 1024);
// خروجی : ۴۳۰۸۴
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">اگر چه متد dispose() پیکسل ها را از حافظه حذف می کند ، <strong> می بایست هنوز به مرجع مقدار null (تهی) داده شود تا رها سازی به صورت کامل انجام شود.</strong> همیشه سعی کنید زمانی که نیازی به شی BitmapData ندارید از متد dispose() استفاده کنید و به مرجع نیز مقدار تهی (null) اختصاص دهید ، با این کار حافظه بلافاصله آزاد می شود.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>تذکر : </strong>فلش پلیر ۱۰.۱ و ادوبی ایر ۱.۳.۲ متد جدیدی با نام disposeXML() بر روی کلاس های System معرفی نموده اند. این متد به شما این امکان را می دهد که با مقدار دهی XML tree به عنوان پارامتر آن ، شی XML را بلافاصله برای جمع آوری زباله (garbage collection) آماده کنید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">موفق و پیروز باشید.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1390/02/%d8%a8%d9%87%db%8c%d9%86%d9%87-%d8%b3%d8%a7%d8%b2%db%8c-%d9%81%d9%84%d8%b4-%d8%a2%d8%b2%d8%a7%d8%af-%d8%b3%d8%a7%d8%b2%db%8c-%d8%ad%d8%a7%d9%81%d8%b8%d9%87/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>بهینه سازی فلش &#8211; فعال سازی و غیر فعال سازی رویدادها</title>
		<link>http://blog.iflashlord.com/1390/02/%d8%a8%d9%87%db%8c%d9%86%d9%87-%d8%b3%d8%a7%d8%b2%db%8c-%d9%81%d9%84%d8%b4-%d9%81%d8%b9%d8%a7%d9%84-%d8%b3%d8%a7%d8%b2%db%8c-%d9%88-%d8%ba%db%8c%d8%b1-%d9%81%d8%b9%d8%a7%d9%84-%d8%b3%d8%a7%d8%b2/</link>
		<comments>http://blog.iflashlord.com/1390/02/%d8%a8%d9%87%db%8c%d9%86%d9%87-%d8%b3%d8%a7%d8%b2%db%8c-%d9%81%d9%84%d8%b4-%d9%81%d8%b9%d8%a7%d9%84-%d8%b3%d8%a7%d8%b2%db%8c-%d9%88-%d8%ba%db%8c%d8%b1-%d9%81%d8%b9%d8%a7%d9%84-%d8%b3%d8%a7%d8%b2/#comments</comments>
		<pubDate>Wed, 04 May 2011 20:24:15 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[ادوبی فلش]]></category>
		<category><![CDATA[اکشن اسکریپت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[Activate]]></category>
		<category><![CDATA[addEventListener]]></category>
		<category><![CDATA[Deactivate]]></category>
		<category><![CDATA[ENTER_FRAME]]></category>
		<category><![CDATA[Event.ACTIVATE]]></category>
		<category><![CDATA[Event.DEACTIVATE]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Function]]></category>
		<category><![CDATA[Object]]></category>
		<category><![CDATA[stage]]></category>
		<category><![CDATA[stage.frameRate]]></category>
		<category><![CDATA[بهینه سازی]]></category>
		<category><![CDATA[رویدادها]]></category>
		<category><![CDATA[غیر فعال سازی]]></category>
		<category><![CDATA[فعال سازی]]></category>
		<category><![CDATA[فلش]]></category>

		<guid isPermaLink="false">http://blog.iflashlord.com/?p=955</guid>
		<description><![CDATA[بهینه سازی در فلش یک اصل مهم به حساب می آید و افزایش و کار بر روی آن برای توسعه دهندگان فلش امری الزامی است. به عنوان یک توسعه دهنده فلش و به عنوان کسی که برای آینده این نرم افزار بزرگ احساس مسئولیت می کند ، ما وظیفه داریم در ساخت عناصر فلش که [...]]]></description>
			<content:encoded><![CDATA[<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">
	<img src="http://blog.iflashlord.com/wp-content/uploads/2011/04/optimaize_flash_iflashlord.jpg" alt="iflashlord.com" />
	</p><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">بهینه سازی در فلش یک اصل مهم به حساب می آید و افزایش و کار بر روی آن     برای توسعه دهندگان فلش امری الزامی است. به عنوان یک توسعه دهنده فلش و    به  عنوان کسی که برای آینده این نرم افزار بزرگ احساس مسئولیت می کند ،   ما   وظیفه داریم در ساخت عناصر فلش که کارایی بهتری دارند پیش گام باشیم و     همواره بهترین و بهینه ترین روش را استفاده کنیم. در این مجموعه آموزشی     بهینه سازی فلش به نکات مهم برای مدیریت بر عناصر و حافظه ها … می   پردازیم و   تلاش می کنیم که بتوانیم با استفاده از نکات ارائه شده خروجی   بهینه تر و   سبک تری از پروژه فلش خود داشته باشیم.<strong> </strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>بخش چهارم &#8211; فعال سازی(Activate) و غیر فعال سازی(Deactivate) رویدادها</strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">از زمان انتشار فلش پلیر ۹ (Flash Player 9) دو رویداد (Event) به فلش افزوده شد (رویداد <strong>Event.ACTIVATE</strong> و رویداد <strong>Event.DEACTIVATE</strong>) این رویداد ها می توانند برای شما امکان تنظیم برنامه خود برای استفاده از کمترین میزان سیکل پردازنده (CPU) را امکان پذیر سازند.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span id="more-955"></span></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">این رویداد ها این امکان را به شما می دهند که زمانی که روی فلش شما تمرکز (فوکوس) می شود و یا زمانی که تمرکز (فوکوس) از روی آن خارج می شود را تشخیص دهید. در نتیجه ، می توان کد را برای نشان دادن واکنش به تغییرات فعال و غیر فعال شدن بهینه سازی نمود.</p>
<blockquote><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">نکته : استفاده از رویدادهای Event.ACTIVATE و Event.DEACTIVATE برای تشخص عدم فعالیت برنامه ای که در پس زمینه کاری قرار دارد و بهینه سازی برنامه شما مناسب می باشد.</p></blockquote>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در کد زیر از هر دو رویداد استفاده می کنیم و به صورت پویا نرخ فریم (Frame rate) را در زمانی که فوکوس (Focus) از برنامه خارج شود روی صفر تنظیم می کنیم. به عنوان مثال زمانی که شما به تب دیگر از مرورگر می روید و یا خارج از محیط قرار گیری فلش در صفحه کلیک می کنید و یا برنامه را در پس زمینه کاری قرار می دهید برنامه شما از فوکوس خارج می شود.</p>
<pre class="brush: as3; title: ; notranslate">
//تعریف متغییر نرخ فریم جاری و نرخ فریم حالت غیر فعال
var originalFrameRate:uint = stage.frameRate;
var standbyFrameRate:uint = 0;

stage.addEventListener( Event.ACTIVATE, onActivate );
stage.addEventListener( Event.DEACTIVATE, onDeactivate );

function onActivate( e:Event ):void
{
	// بازگرداندن نرخ فریم اصلی
	stage.frameRate = originalFrameRate;
}

function onDeactivate( e:Event ):void
{
	// تنظیم نرخ فریم بر روی صفر
	stage.frameRate = standbyFrameRate;
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">زمانی که روی برنامه شما دوباره فوکوس می شود ، نرخ فریم به حالت اصلی بازگردانده می شود و برنامه شما به کارش ادامه می دهد. در ضمن شما به جای استفاده از تغییر نرخ فریم به صورت پویا می توانید بهینه سازی های دیگر مانند فریز کردن اشاء ، دادن افکت بلور و&#8230; را درون برنامه خود در نظر بگیرید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">این رویداد ها به شما این امکان را می دهد که مکانیزمی شبیه به Pause و Resume که در واقع امکان ایجاد مکث و وقفه در برنامه و امکان ادامه دادن آن در زمان دلخواه می باشد را ایجاد کنید. نمونه ی این ویژگی را شاید گاهی اوقات در برنامه های تلفن های همراه و یا نت بوک های دیده باشید ، شما هم می توانید به برنامه خود اینچنین امکانی را اضافه کنید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">موفق و پیروز باشید.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1390/02/%d8%a8%d9%87%db%8c%d9%86%d9%87-%d8%b3%d8%a7%d8%b2%db%8c-%d9%81%d9%84%d8%b4-%d9%81%d8%b9%d8%a7%d9%84-%d8%b3%d8%a7%d8%b2%db%8c-%d9%88-%d8%ba%db%8c%d8%b1-%d9%81%d8%b9%d8%a7%d9%84-%d8%b3%d8%a7%d8%b2/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>بهینه سازی فلش &#8211; استفاده دوباره از Object ها</title>
		<link>http://blog.iflashlord.com/1390/02/%d8%a8%d9%87%db%8c%d9%86%d9%87-%d8%b3%d8%a7%d8%b2%db%8c-%d9%81%d9%84%d8%b4-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%d8%af%d9%88%d8%a8%d8%a7%d8%b1%d9%87-%d8%a7%d8%b2-object-%d9%87%d8%a7/</link>
		<comments>http://blog.iflashlord.com/1390/02/%d8%a8%d9%87%db%8c%d9%86%d9%87-%d8%b3%d8%a7%d8%b2%db%8c-%d9%81%d9%84%d8%b4-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%d8%af%d9%88%d8%a8%d8%a7%d8%b1%d9%87-%d8%a7%d8%b2-object-%d9%87%d8%a7/#comments</comments>
		<pubDate>Wed, 20 Apr 2011 23:17:12 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[ادوبی ایر]]></category>
		<category><![CDATA[ادوبی فلش]]></category>
		<category><![CDATA[اکشن اسکریپت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[addChild]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[bitmap]]></category>
		<category><![CDATA[BitmapData]]></category>
		<category><![CDATA[const]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Math.random()]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[Number]]></category>
		<category><![CDATA[Object]]></category>
		<category><![CDATA[optimize]]></category>
		<category><![CDATA[output]]></category>
		<category><![CDATA[Rectangle]]></category>
		<category><![CDATA[stageHeight]]></category>
		<category><![CDATA[stageWidth]]></category>
		<category><![CDATA[System.totalMemory]]></category>
		<category><![CDATA[toFixed]]></category>
		<category><![CDATA[trace]]></category>
		<category><![CDATA[آموزش اکشن اسکریپت 3.0]]></category>
		<category><![CDATA[اکشن اسکریپت 3]]></category>
		<category><![CDATA[بهینه سازی]]></category>
		<category><![CDATA[حافظه]]></category>
		<category><![CDATA[فلش]]></category>

		<guid isPermaLink="false">http://blog.iflashlord.com/?p=947</guid>
		<description><![CDATA[بهینه سازی در فلش یک اصل مهم به حساب می آید و افزایش و کار بر روی آن برای توسعه دهندگان فلش امری الزامی است. به عنوان یک توسعه دهنده فلش و به عنوان کسی که برای آینده این نرم افزار بزرگ احساس مسئولیت می کند ، ما وظیفه داریم در ساخت عناصر فلش که [...]]]></description>
			<content:encoded><![CDATA[<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">
	<img src="http://blog.iflashlord.com/wp-content/uploads/2011/04/optimaize_flash_iflashlord.jpg" alt="iflashlord.com" />
	</p><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">بهینه سازی در فلش یک اصل مهم به حساب می آید و افزایش و کار بر روی آن  برای توسعه دهندگان فلش امری الزامی است. به عنوان یک توسعه دهنده فلش و به  عنوان کسی که برای آینده این نرم افزار بزرگ احساس مسئولیت می کند ، ما  وظیفه داریم در ساخت عناصر فلش که کارایی بهتری دارند پیش گام باشیم و  همواره بهترین و بهینه ترین روش را استفاده کنیم. در این مجموعه آموزشی  بهینه سازی فلش به نکات مهم برای مدیریت بر عناصر و حافظه ها … می پردازیم و  تلاش می کنیم که بتوانیم با استفاده از نکات ارائه شده خروجی بهینه تر و  سبک تری از پروژه فلش خود داشته باشیم.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>بخش دوم &#8211; استفاده دوباره از Object ها</strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">راه دیگر برای بهینه سازی حافظه (memory) استفاده دوباره از اشیاء و اجتناب از ساختن دوباره و استفاده از آنها در هر زمان ممکن ، می باشد. می بایست تا جایی که می شود از ساختن دوباره object ها برای استفاده اجتناب نمود.<strong> </strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span id="more-947"></span><br />
</strong></p>
<pre class="brush: as3; highlight: [21]; title: ; notranslate">
import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.geom.Rectangle;

const MAX_NUM:int = 18;

const LINE_WIDTH:int = 30;
const LINE_HEIGHT:int = 400;

const COLOR:uint = 0xCCCCCC;

var myBitmapData:BitmapData = new BitmapData(stage.stageWidth,stage.stageHeight,false,COLOR);//200 , 200 , true);
var myBitmap:Bitmap;

var area:Rectangle;
for (var i:int = 0; i &lt; MAX_NUM; i++)
{

	//نمونه روش غلط - از کد زیر استفاده نکنید

	area = new Rectangle(i*LINE_WIDTH,0,LINE_WIDTH,LINE_HEIGHT);

	myBitmapData.fillRect(area,Math.random()*COLOR);
	myBitmap = new Bitmap(myBitmapData);
	addChild(myBitmap);

}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">بازسازی شی Rectangle در هر تکرار حلقه مقدار بیشتری حافظه را استفاده می کند و اجرا را کند تر می کند ، زیرا شی جدید ساخته می شود.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>به روشی که در کد زیر استفاده شده است دقت کنید :</strong></p>
<pre class="brush: as3; highlight: [16]; title: ; notranslate">
import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.geom.Rectangle;

const MAX_NUM:int = 18;

const LINE_WIDTH:int = 30;
const LINE_HEIGHT:int = 400;

const COLOR:uint = 0xCCCCCC;

var myBitmapData:BitmapData = new BitmapData(stage.stageWidth,stage.stageHeight,false,COLOR);
var myBitmap:Bitmap;

// ساخت شی خارج از حلقه
var area:Rectangle = new Rectangle(0,0,LINE_WIDTH,LINE_HEIGHT);

for (var i:int = 0; i &lt; MAX_NUM; i++)
{

	//تغییر مختصات به صورت مجزا
	area.x = i * LINE_WIDTH;

	myBitmapData.fillRect(area,Math.random()*COLOR);

}

myBitmap = new Bitmap(myBitmapData);
addChild(myBitmap);
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">همان طور که مشاهده می کنید این کد هم همان خروجی و نتیجه مورد اول را دارد ولی بهینه سازی در آن انجام شده و حافظه کمتری را اشغال می کند.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span style="color: #ffffff;">-</span></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">مثال قبلی شی مربوطه ، تاثیر نسبتا کمی در استفاده از حافظه داشت ، در مثال بعدی با استفاده از شی BitmapData  تعداد زیادی مربع توسط یک حلقه ایجاد می شود</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>کد زیر مربع هایی را به حالت موزاییک به صفحه اضافه می کند :<br />
</strong></p>
<pre class="brush: as3; title: ; notranslate">

var myImage:BitmapData;

var myContainer:Bitmap;

const MAX_NUM:int = 300;

for (var i:int = 0; i&lt; MAX_NUM; i++)
{

	// ساخت بیت مپ ۲۰ در ۲۰ پیکسل که شفافیت پس زمینه در آن غیر فعال شده است
	myImage = new BitmapData(20,20,false,0xF0D062);

	// ساخت یک نگه دارند برای هر مورد به صورت مجزا

	myContainer = new Bitmap(myImage);

	// افزودن به لیست نمایش - Display List

	addChild(myContainer);

	// موقعیت دهی هر نگه دارنده

	myContainer.x = (myContainer.width + 8 ) * Math.round(i % 20);

	myContainer.y = (myContainer.height + 8 ) * int(i / 20);

}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در نسخه بهینه سازی شده کد بالا (که در زیر قابل مشاهده است) یک BitmapData ایجاد می شود و برای چندین بار برای هر Bitmap استفاده می شود و نتیجه مشابه مورد قبل نیز خواهیم داشت، البته با اشغال مقدار کمتری از حافظه.</p>
<pre class="brush: as3; title: ; notranslate">
// ساخت بیت مپ ۲۰ در ۲۰ پیکسل که شفافیت پس زمینه در آن غیر فعال شده است
var myImage:BitmapData = new BitmapData(20,20,false,0xF0D062);

var myContainer:Bitmap;

const MAX_NUM:int = 300;

for (var i:int = 0; i&lt; MAX_NUM; i++)
{

	//ساخت یک نگه دارنده که به بیت مپ کلاس تعریف شده ارجاع می شود

	myContainer = new Bitmap(myImage);
	// افزودن به لیست نمایش - Display List
	addChild(myContainer);
	// موقعیت دهی هر نگه دارنده
	myContainer.x = (myContainer.width + 8 ) * Math.round(i % 20);

	myContainer.y = (myContainer.height + 8 ) * int(i / 20);

}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در این مورد با بهینه سازی انجام شده نزدیک به <strong>۶۵۰ تا ۷۰۰ کیلوبایت</strong> در حافظه (memory) فلش بهینه سازی انجام شده است که مقدار قابل توجهی می باشد به خصوص برای برنامه هایی که برای گوشی ها و دستگاه هایی به غیر کامپیوتر ها آماده می شود.<br />
<strong></strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>روش دست یابی به مقدار حافظه مصرفی در فلش:</strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">از کد ساده زیر استفاده کنید در در پنجره خروجی output مقدار حافظه مصرفی را مشاهده کنید.</p>
<pre class="brush: as3; title: ; notranslate">

trace(Number( System.totalMemory / 1024 / 1024 ).toFixed( 2 ), &quot;Mb&quot;);
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>نکته : </strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">کد زیر که در نمونه اول ذکر شده است برای تولید یک رنگ تصادفی استفاده می شود در واقع مقدار یک رنگ که به عنوان ثابت در ابتدا تعریف شدن در فرمان random ضرب می شود که حاصل آن یک رنگ اتفاقی می باشد.</p>
<pre class="brush: as3; title: ; notranslate">
Math.random()*COLOR;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">موفق و پیروز باشید.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1390/02/%d8%a8%d9%87%db%8c%d9%86%d9%87-%d8%b3%d8%a7%d8%b2%db%8c-%d9%81%d9%84%d8%b4-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%d8%af%d9%88%d8%a8%d8%a7%d8%b1%d9%87-%d8%a7%d8%b2-object-%d9%87%d8%a7/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>بهینه سازی فلش &#8211; Display Objects</title>
		<link>http://blog.iflashlord.com/1390/01/%d8%a8%d9%87%db%8c%d9%86%d9%87-%d8%b3%d8%a7%d8%b2%db%8c-%d9%81%d9%84%d8%b4-display-objects/</link>
		<comments>http://blog.iflashlord.com/1390/01/%d8%a8%d9%87%db%8c%d9%86%d9%87-%d8%b3%d8%a7%d8%b2%db%8c-%d9%81%d9%84%d8%b4-display-objects/#comments</comments>
		<pubDate>Fri, 08 Apr 2011 23:09:44 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[ادوبی ایر]]></category>
		<category><![CDATA[ادوبی فلش]]></category>
		<category><![CDATA[اکشن اسکریپت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[cursor]]></category>
		<category><![CDATA[Display Objects]]></category>
		<category><![CDATA[getSize]]></category>
		<category><![CDATA[interactive]]></category>
		<category><![CDATA[MovieClip]]></category>
		<category><![CDATA[Object]]></category>
		<category><![CDATA[Objects]]></category>
		<category><![CDATA[Shape]]></category>
		<category><![CDATA[Sprite]]></category>
		<category><![CDATA[trace برنامع های حاوا]]></category>
		<category><![CDATA[trace كردن برنامه]]></category>
		<category><![CDATA[webcam در اکشن اسکریپت 3]]></category>
		<category><![CDATA[آموزش های کاربردی]]></category>
		<category><![CDATA[اسکریپت]]></category>
		<category><![CDATA[انواع object mail]]></category>
		<category><![CDATA[اکشن اسکریپت 3]]></category>
		<category><![CDATA[برنامه نويسي فلش]]></category>
		<category><![CDATA[برنامه نویسی در flash]]></category>
		<category><![CDATA[برنامه نویسی فلش]]></category>
		<category><![CDATA[بنامه نویسی فلش]]></category>
		<category><![CDATA[بهینه سازی]]></category>
		<category><![CDATA[بهینه سازی فلش]]></category>
		<category><![CDATA[دانلود فلش ادوبی]]></category>
		<category><![CDATA[فلش]]></category>
		<category><![CDATA[فلش پلیر]]></category>
		<category><![CDATA[كردن برنامه trace]]></category>
		<category><![CDATA[نحوه trace برنامه در ويندوز]]></category>
		<category><![CDATA[نمونه سوال فلش]]></category>
		<category><![CDATA[نمونه سوالات ادوبی فلش]]></category>
		<category><![CDATA[نمونه سوالات فلش]]></category>
		<category><![CDATA[نوشتن برنامه روی movie clip]]></category>

		<guid isPermaLink="false">http://blog.iflashlord.com/?p=944</guid>
		<description><![CDATA[طبق آمار گرفته شده در صفحه اصلی از بین ۲۰۰ رای داده شده بعد از گزینه همه موارد با ۵۱ رای گزینه آموزش های کاربردی فلش قرار دارد با ۴۰ رای ، با توجه به این موضوع و با توجه به احترام به نظر و خواست کاربران ، مجموعه ای از آموزش های بهینه سازی [...]]]></description>
			<content:encoded><![CDATA[<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">
	<img src="http://blog.iflashlord.com/wp-content/uploads/2011/04/optimaize_flash_iflashlord.jpg" alt="iflashlord.com" />
	</p><blockquote><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span style="font-size: 11px;">طبق آمار گرفته شده در صفحه اصلی از بین ۲۰۰ رای داده شده بعد از گزینه همه موارد با ۵۱ رای  گزینه آموزش های کاربردی فلش قرار دارد با ۴۰ رای ، با توجه به این موضوع و با توجه به احترام به نظر و خواست کاربران ، مجموعه ای از آموزش های بهینه سازی فلش را قرار می دهم که برای همه کاربران فلش مفید و کاربردی می باشد ، البته در این موارد رتبه سوم با برنامه نویسی اکشن اسکریپت ۳ با ۳۷ رای می باشد به همین دلیل در بهینه سازی روش هایی در اکشن اسکریپت ۳ پرداخته می شود. در اینجا باز هم عرض می کنم که نظر شما عزیزان برای بنده بسیار ارزشمند و مهم می باشد.</span></p></blockquote>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">بهینه سازی در فلش یک اصل مهم به حساب می آید و افزایش و کار بر روی آن برای توسعه دهندگان فلش امری الزامی است. به عنوان یک توسعه دهنده فلش و به عنوان کسی که برای آینده این نرم افزار بزرگ احساس مسئولیت می کند ، ما وظیفه داریم در ساخت عناصر فلش که کارایی بهتری دارند پیش گام باشیم و همواره بهترین و بهینه ترین روش را استفاده کنیم. در این مجموعه آموزشی بهینه سازی فلش به نکات مهم برای مدیریت بر عناصر و حافظه ها &#8230; می پردازیم و تلاش می کنیم که بتوانیم با استفاده از نکات ارائه شده خروجی بهینه تر و سبک تری از پروژه فلش خود داشته باشیم.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>بخش اول – Display Objects</strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">یکی از ساده ترین بهینه سازی ها راه ها و روش هایی است که برای محدود کردن استفاده از حافظه (memory) با استفاده از اختصاص دادن نوع خاصی از Display Object می باشد (مثلا MovieClip , Shape , Sprite ).</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span id="more-944"></span></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">به عنوان مثال:</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">shape ها تعاملی (interactive) نیستند در مواردی مثل اشکال ساده و طرح هایی که نیازی به خصوصیات تعاملی ندارد از این نوع استفاده کنید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">برای موارد تعاملی که نیازی به تایم لاین نیست از Sprite استفاده کنید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">برای انیمیشن ها که از تایم لاین استفاده می شود ، MovieClip را انتخاب نمایید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>همیشه سعی کنید بهترین و کارآمد ترین نوع شی را در بخش های مختلف برنامه خود اعمال کنید.</strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">کد های زیر مقدار مصرفی حافظه انواع متفاوت display object ها را نشان می دهد :</p>
<pre class="brush: as3; title: ; notranslate">
trace(getSize(new Shape()));
// خروجی: ۲۳۶

trace(getSize(new Sprite()));
// خروجی: ۴۱۲

trace(getSize(new MovieClip()));
// خروجی: ۴۴۰
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">متد  (method) ؛ getSize() مورد استفاده در کد بالا ، نشان دهنده مقدار استفاده از حافظه بر مبانی بایت (byte) می باشد. شما می توانید به جای استفاده از چند MoiveClip در موارد درست که استفاده امکانات MovieClip نیاز نمی باشد از شی Shape استفاده کنید و با این کار از حافظه کمتری استفاده کنید. البته شاید در مورد یک شی این موارد تفاوت زیادی نداشته باشند ولی این مورد خودش را با بزرگ و بزرگ تر شدن پروژه به خوبی نشان خواهد داد.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1390/01/%d8%a8%d9%87%db%8c%d9%86%d9%87-%d8%b3%d8%a7%d8%b2%db%8c-%d9%81%d9%84%d8%b4-display-objects/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>بارگزاری اطلاعات XML توسط اکشن اسکریپت ۳</title>
		<link>http://blog.iflashlord.com/1389/09/%d8%a8%d8%a7%d8%b1%da%af%d8%b2%d8%a7%d8%b1%db%8c-%d8%a7%d8%b7%d9%84%d8%a7%d8%b9%d8%a7%d8%aa-xml-%d8%aa%d9%88%d8%b3%d8%b7-%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/1389/09/%d8%a8%d8%a7%d8%b1%da%af%d8%b2%d8%a7%d8%b1%db%8c-%d8%a7%d8%b7%d9%84%d8%a7%d8%b9%d8%a7%d8%aa-xml-%d8%aa%d9%88%d8%b3%d8%b7-%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>Mon, 22 Nov 2010 13:08:35 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[ادوبی فلش]]></category>
		<category><![CDATA[اکشن اسکریپت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[*.xml فايل]]></category>
		<category><![CDATA[3فلش اکشن اسکریپت]]></category>
		<category><![CDATA[action script]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[actionscript array copy]]></category>
		<category><![CDATA[addChild]]></category>
		<category><![CDATA[addchild در فلش]]></category>
		<category><![CDATA[addEventListener]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[attribute]]></category>
		<category><![CDATA[Encoding]]></category>
		<category><![CDATA[encoding فارسی درxml]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[flash xml چیست]]></category>
		<category><![CDATA[flash فارسی xml]]></category>
		<category><![CDATA[flash فارسی در xml استفاده از]]></category>
		<category><![CDATA[load فايل xml در flash]]></category>
		<category><![CDATA[loadvariablesnum با اکشن اسکریپت 3]]></category>
		<category><![CDATA[Object]]></category>
		<category><![CDATA[object فلش]]></category>
		<category><![CDATA[TimeLine]]></category>
		<category><![CDATA[URLLoader]]></category>
		<category><![CDATA[URLRequest]]></category>
		<category><![CDATA[variable]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[xml اکشن اسکریپت و فلش]]></category>
		<category><![CDATA[xml در اکشن اسکریپت 3]]></category>
		<category><![CDATA[xml درباره]]></category>
		<category><![CDATA[xml فارسي]]></category>
		<category><![CDATA[xml فارسی فلش]]></category>
		<category><![CDATA[xml فايل چيست]]></category>
		<category><![CDATA[xml فایل]]></category>
		<category><![CDATA[xml فایل چیست]]></category>
		<category><![CDATA[xml فلش]]></category>
		<category><![CDATA[xml فلش و اکشن اسکریپت]]></category>
		<category><![CDATA[xml نوشتن در فایل]]></category>
		<category><![CDATA[xml و فلش]]></category>
		<category><![CDATA[xml چيست]]></category>
		<category><![CDATA[xml چیست]]></category>
		<category><![CDATA[xml چیست؟]]></category>
		<category><![CDATA[XMLDocument]]></category>
		<category><![CDATA[xmlدرباره]]></category>
		<category><![CDATA[xmlفارسی]]></category>
		<category><![CDATA[xmlفایل]]></category>
		<category><![CDATA[xmlچیست؟درباره]]></category>
		<category><![CDATA[آموزش اکشن اسکریت در فلش آنلاین]]></category>
		<category><![CDATA[آموزش اکشن اسکریپ3]]></category>
		<category><![CDATA[آموزش اکشن اسکریپت دانلود]]></category>
		<category><![CDATA[آموزش اکشن اسکریپت فلش xml]]></category>
		<category><![CDATA[آموزش فلش اکشن اسکریپت 2]]></category>
		<category><![CDATA[آموزش كامل فلش اكشن 3]]></category>
		<category><![CDATA[استفاده از xml در فلش]]></category>
		<category><![CDATA[استفاده از فارسی در xml]]></category>
		<category><![CDATA[اسکیرپت اکشن اموزش]]></category>
		<category><![CDATA[اكشن اسكريپت]]></category>
		<category><![CDATA[اكشن اسكريپت 3]]></category>
		<category><![CDATA[اكشن اسكريپت بازي]]></category>
		<category><![CDATA[اموزش اکشن نویسی]]></category>
		<category><![CDATA[اموزش اکشن نویسی فلش]]></category>
		<category><![CDATA[ايكس ام ال در فلش]]></category>
		<category><![CDATA[اکشن اسکریپت فلش]]></category>
		<category><![CDATA[اکشن اسکریپت3]]></category>
		<category><![CDATA[ایجاد فایل xml]]></category>
		<category><![CDATA[ایک ام ال چیست ؟]]></category>
		<category><![CDATA[ایکس ام ال]]></category>
		<category><![CDATA[ایکس ام ال فلش]]></category>
		<category><![CDATA[ایکس ام ال و فلش]]></category>
		<category><![CDATA[ایکس ام ال چیست]]></category>
		<category><![CDATA[ایکس ام ال چیست؟]]></category>
		<category><![CDATA[بازی اکشن اسکریپت 3 فلش]]></category>
		<category><![CDATA[برنامه actionscript]]></category>
		<category><![CDATA[برنامه نویسی action script]]></category>
		<category><![CDATA[برنامه نویسی xml]]></category>
		<category><![CDATA[برنامه نویسی فلش action script]]></category>
		<category><![CDATA[برنامهactionscript]]></category>
		<category><![CDATA[تمرین actionscript]]></category>
		<category><![CDATA[دانلود کتاب برنامه نویسی جاوا]]></category>
		<category><![CDATA[دانلوداكشن]]></category>
		<category><![CDATA[دانلوداكشن اسكريپت]]></category>
		<category><![CDATA[دانلوداکشن اسکریپت]]></category>
		<category><![CDATA[درباره اكشن اسكريپت 3]]></category>
		<category><![CDATA[درباره فایل xml]]></category>
		<category><![CDATA[روش برنامه نویسی xml]]></category>
		<category><![CDATA[روش ساخت اسکریپت]]></category>
		<category><![CDATA[روش ساخت فایل xml]]></category>
		<category><![CDATA[روش ساخت فایل xml برای اسکریپت]]></category>
		<category><![CDATA[روش ساختن فایل xml]]></category>
		<category><![CDATA[رویداد]]></category>
		<category><![CDATA[ساخت فایل xml]]></category>
		<category><![CDATA[ساخت فایل xml برای اسکریپت]]></category>
		<category><![CDATA[ساخت فایل های xml]]></category>
		<category><![CDATA[ساختار فایل xml]]></category>
		<category><![CDATA[ساختن فایل xml]]></category>
		<category><![CDATA[سرچ در xml فلش]]></category>
		<category><![CDATA[سرچ در فلش با ایکس ام ال]]></category>
		<category><![CDATA[طریقه استفاده از فایل xml]]></category>
		<category><![CDATA[طریقه استفاده از فلش]]></category>
		<category><![CDATA[طریقه ایجاد فایل xml]]></category>
		<category><![CDATA[طریقه ساخت فایل xml]]></category>
		<category><![CDATA[فارسي xml در فلش]]></category>
		<category><![CDATA[فايل xml چيست]]></category>
		<category><![CDATA[فايل فلش چيست؟]]></category>
		<category><![CDATA[فايلهايي با پسورد jml چيست؟]]></category>
		<category><![CDATA[فايل‌هاي xml چیست؟]]></category>
		<category><![CDATA[فایل xml]]></category>
		<category><![CDATA[فایل xml ساخت]]></category>
		<category><![CDATA[فایل xml چ]]></category>
		<category><![CDATA[فایل xml چیست]]></category>
		<category><![CDATA[فایل xml چیست؟]]></category>
		<category><![CDATA[فایل xmlچیست]]></category>
		<category><![CDATA[فایل فلش]]></category>
		<category><![CDATA[فایل فلش چیست]]></category>
		<category><![CDATA[فایل فلش چیست؟]]></category>
		<category><![CDATA[فایل چیست]]></category>
		<category><![CDATA[فایل چیست xml]]></category>
		<category><![CDATA[فایلxml چیست]]></category>
		<category><![CDATA[فایلهای فلش چیست؟]]></category>
		<category><![CDATA[فرا خوانی اسکرپت پی اچ پی خارجی به صفحه]]></category>
		<category><![CDATA[فلش]]></category>
		<category><![CDATA[فلش action script]]></category>
		<category><![CDATA[فلش xml فارسی]]></category>
		<category><![CDATA[فلش و فارسي در xml]]></category>
		<category><![CDATA[قابلیت xml چیست]]></category>
		<category><![CDATA[قرار دادن فایلهای xml در سایت]]></category>
		<category><![CDATA[قفل]]></category>
		<category><![CDATA[متن]]></category>
		<category><![CDATA[متن فارسی در اکشن اسکریپت 3]]></category>
		<category><![CDATA[نحوه ساختن یک فایل xml]]></category>
		<category><![CDATA[نحوه فارسی فلش xml]]></category>
		<category><![CDATA[نرم افزار]]></category>
		<category><![CDATA[نرم افزار فلش action]]></category>
		<category><![CDATA[نوشتن در xml]]></category>
		<category><![CDATA[نوشتن در فایل flash]]></category>
		<category><![CDATA[نوشتن در فایل xml]]></category>
		<category><![CDATA[نوشتن در فایل xml در فلش]]></category>
		<category><![CDATA[نویسی فلش action script]]></category>
		<category><![CDATA[پلیر صوت در فلش]]></category>
		<category><![CDATA[چيست xml]]></category>
		<category><![CDATA[چیست؟ xml]]></category>
		<category><![CDATA[چیست؟فایل xml]]></category>
		<category><![CDATA[کار با صدا در action script 2]]></category>
		<category><![CDATA[کار نکردن xml در فلش]]></category>
		<category><![CDATA[کالن چیست]]></category>

		<guid isPermaLink="false">http://blog.iflashlord.com/?p=645</guid>
		<description><![CDATA[استفاده از XML یکی از بهترین راه ها برای ساختار بندی اطلاعات به صورت خارجی (External) و به صورت منطقی و قابل درک به صورت ساده ، برای پردازش و به روز رسانی اطلاعات می باشد. در این مطلب به مباحث زیر پرداخته می شود : ۱ – XML چیست ؟ ۲ – نوشتن یک [...]]]></description>
			<content:encoded><![CDATA[<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">
	<img src="http://blog.iflashlord.com/wp-content/uploads/2010/11/as3_with_xml_iflashlord.jpg" alt="iflashlord.com" />
	</p><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">استفاده از XML یکی از بهترین راه ها برای ساختار بندی اطلاعات به صورت خارجی (External) و به صورت منطقی و قابل درک به صورت ساده ، برای پردازش و به روز رسانی اطلاعات می باشد.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در این مطلب به مباحث زیر پرداخته می شود :</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۱ – XML چیست ؟<br />
۲ – نوشتن یک فایل XML برای فلش<br />
۳ – بارگزاری فایل XML در فلش<br />
۴ – پردازش XML  در فلش</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span id="more-645"></span></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>XML چیست ؟</strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">XML  یک زبان علامت گذاری قابل بسط (E<strong>x</strong>tensible <strong>M</strong>arkup <strong>L</strong>anguage) می باشد، این یک زبان علامت گذاری برای استفاده از ساختار منطقی داده ها که با استفاده از تگ ها (tag) بسیار به HTML شبیه می باشد.<br />
به هر حال، زمانی که از HTML استفاده می کنید ، شما تعدادی تگ تعریف شده برای ایجاد صفحه وب خود دارید، ولی در XML شما تگ های خودتان را می سازید و به دلخواه آنها را در برنامه خود مورد استفاده قرار می دهید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">این موضوع امکان ساخت تگ هایی متناسب با پروژه خودتان که قابل درک برای  هر فردی حتی به صورت مبتدی ، هم باشد را دارید<br />
برای مثال ، شما نیازی به هیچ اطلاعات مقدماتی درباره XML و یا نرم افزاری خاص برای استفاده ندارید . به کد زیر دقت نمایید :</p>
<pre class="brush: plain; title: ; notranslate">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;GALLERY&gt;
	&lt;IMAGE TITLE=&quot;school&quot;&gt;image1.jpg&lt;/IMAGE&gt;
	&lt;IMAGE TITLE=&quot;garden&quot;&gt;image2.jpg&lt;/IMAGE&gt;
	&lt;IMAGE TITLE=&quot;shop&quot;&gt;image3.jpg&lt;/IMAGE&gt;
&lt;/GALLERY&gt;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">XML برای شما امکانی را فراهم می کند تا نام  برچسب های (Tag) خود را با قوانین ساده این زبان بسازند.<br />
ویژگی دیگر یک سند XML این می باشد که عناصر آن بر اساس ساختار (والد / فرزند) Parent / child می باشد ، هر تگ می تواند تعدادی فرزند داشته باشد و تگ های فرزند می توانند یک والد داشته باشند.<br />
برای درک بیشتر به تصویر زیر دقت نمایید :</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">روی محتوای واقعی در یک فایل XML ، هر تگ XML در اکشن اسکریپت به عنوان یک node فراخوانی می شود.<br />
یک node همچنین دارای یک node value  می باشد که بین تگ های node قرار می گیرد ، هر node می تواند به تعداد دلخواه خصوصیت attributes داشته باشد که هر attribute  دارای یک attribute value که درون کوتیشن (“”) مقدار دهی می شود ، است.<br />
تمامی موارد گفته شده عموما می بایست چیزی شبیه به کد زیر باشد :</p>
<pre class="brush: plain; title: ; notranslate">
&lt;ROOT-NODE&gt;
	&lt;CHILD-NODE ATTRIBUTE=&quot;value&quot;&gt;sub-child-node-or-node-value&lt;/CHILD-NODE&gt;
	&lt;CHILD-NODE ATTRIBUTE=&quot;value&quot;&gt;sub-child-node-or-node-value&lt;/CHILD-NODE&gt;
	&lt;CHILD-NODE ATTRIBUTE=&quot;value&quot;&gt;sub-child-node-or-node-value&lt;/CHILD-NODE&gt;
&lt;/ROOT-NODE&gt;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">کد بالا شامل ۳ اصل مهم می باشد که باعث می شود در نهایت شما کد XML صحیحی داشته باشید :</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۱. فایل XML شما می بایست شامل یک تگ اصلی (root level XML tag) باشد ، در مثال بالا این مورد با (<em>&lt;ROOT-NODE&gt;&lt;/ROOT-NODE&gt;</em>) نمایش داده شده است که خط اول و خط آخر را شامل می شود.<br />
۲. تمامی تگ های تکی می بایست بسته شوند ، این کار می بایست با نوع بسته تگ مربوطه انجام شود ، در مثال بالا (مثلا <em>&lt;/CHILD-NODE&gt;</em>) ، و یا می بایست توسط تگ های خود بسته (self-closing) این کار انجام شود ، در این روش در انتهای تگ از یک بک اسلش (/) استفاده می شود ( این مورد در مثال بالا وجود ندارد ، برای مثال : <em>&lt;NODE ATTIRIBUTE=&#8221;value&#8221; /&gt;</em><em> </em>)</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">3. اگر شما بخواهید از یک attribute  و یا بیشتر استفاده نمایید ، شما می بایست که مقدار های هر attribute در بین دو کوتیشن (“”) قرار دهید.</p>
<h2>نوشتن یک فایل XML  برای Flash</h2>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">با توجه به این که XML فقط از متن تشکیل شده است شما می توانید از هر ویرایش گر متنی برای ساخت یک فایل XML استفاده نمایید.<br />
Notepad خود را باز نمایید و کد زیر را Copy  و برای ساخت فایل XML درون برنامه Paste  نمایید.<br />
فایل را با نام iflashlord.xml در پوشه ای که می خواهیم فایل فلش خود را ایجاد نماییم ذخیره می کنیم.</p>
<pre class="brush: plain; title: ; notranslate">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;GALLERY&gt;
	&lt;IMAGE TITLE=&quot;school&quot;&gt;image1.jpg&lt;/IMAGE&gt;
	&lt;IMAGE TITLE=&quot;garden&quot;&gt;image2.jpg&lt;/IMAGE&gt;
	&lt;IMAGE TITLE=&quot;shop&quot;&gt;image3.jpg&lt;/IMAGE&gt;
&lt;/GALLERY&gt;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><img title="gallery_xml_iflashlord" src="http://blog.iflashlord.com/wp-content/uploads/2010/11/gallery_xml_iflashlord.jpg" alt="" width="355" height="279" /></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><em><br />
</em></strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">خط اول فایل XML  ما در کد بالا یک پارامتر دلخواه برای تنظیمات مربوطه به ورژن فایل XML و Encoding فایل XML ما می باشد. بهتر هست از این مورد استفاده شود ، حتی اگر در نتیجه ای که در فلش مشاهده می شود تاثیری نداشته باشد.</p>
<h2>بارگزاری XML در Flash</h2>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">کار را با ایجاد پروژه جدید فلش با اکشن اسکریپت ورژن ۳ نمایید. روی تنها فریم موجود در تایم لاین TimeLine راست کلیک کرده و Actions را انتخاب نمایید ( یا کلید F9 را بفشارید)<br />
کاری که می خواهیم در این آموزش در این پنجره انجام دهیم :</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۱.     ساخت یک variable برای نگه داشتن یک نمونه  (instance) از کلاس XML</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">2.     ساخت یک نمونه از کلاس URLLoader برای بارگزاری فایل XML</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">3.     پاس دادن اطلاعات موجود در فایل XML به نمونه متغیر (variable) آن در زمانی که فایل XML به صورت کامل بارگزاری شد.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">اکش اسکریپت ۳ ویژگی های دیگری برای کار با XML توسط کلاس XMLDocument را دارا می باشد .</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در ابتدا می بایست یک متغیر(variable)  از نوع XML ایجاد نماییم ، برای این کار به راحتی می توان از var  برای تعریف استفاده نمود :</p>
<pre class="brush: as3; title: ; notranslate">
var myXML:XML;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">عملگر کلون ((: برای قفل کردن نوع  متغیر بر روی XML استفاده می شود و این به این معنا می باشد که این متغیر نمی تواند چیزی به جز اطلاعات مربوطه به XML را نگه داری کند. در صورتی که سعی نمایید که داده ای با نوع دیگری به ای متغیر بدهید با خطای در زمان کامپایل compile-time error مواجه می شوید برای مشخص کردن نوع متغیر از قالب زیر استفاده می شود.</p>
<pre class="brush: as3; title: ; notranslate">
var variableIdentified:DataType;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">که به ترتیب از سمت چپ <strong>شناسه متغیر</strong> : <strong>نوع داده متغیر</strong> می باشد</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در مرحله بعد می بایست یک نمونه از کلاس  URLLoader  برای بارگزاری فایل XML ایجاد کنیم ، URLLoader  یک کلاس می باشد که عهده دار بارگزاری همه داده های باینری و متنی می باشد، ابتدا می بایست یک نمونه ساخته شود و در مرحله بعد توسط متد load فایل XML بارگزاری شود ، به کد زیر دقت نمایید :</p>
<pre class="brush: as3; highlight: [2,3]; title: ; notranslate">
var myXML:XML;
 var myLoader:URLLoader = new URLLoader();
 myLoader.load(new URLRequest(&quot;iflashlord.xml&quot;));
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">همان طور که در کد بالا مشاهده می کنید ما فایل iflashlord.xml را توسط متد load مربوطه به کلاس URLLoader بارگزاری نمودیم ، کلاس URLLoader برای دریافت URL مربوطه به فایل ما نیاز دارد که داده مربوطه را توسط نمونه ای که از کلاس URLRequest ساخته شده دریافت نماید به همین منظور آدرس فایل مربوطه با استفاده از کلاس URLRequest به متد load  کلاس URLLoader مقدار دهی شده است ، نکته: شما می توانید URLRequest را به صورت جدا در یک متغیر ایجاد نمایید و آن را در مراحل مختلف در کد خود استفاده نمایید می توانید نوع متغییر را هم URLRequest تعیین نمایید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">بعد از این مرحله ما می بایست اطمینان حاصل کنیم که فایل XML ما به صورت کامل بارگزاری شده است تا به مراحل بعدی کار بر روی محتوای فایل بپردازیم برای این کار نیاز به ساخت یک شنونده (Listener) داریم تا فرایند بارگزاری را چک نماید و بعد از تکمیل روند بارگزاری فایل XML تابعی را صدا بزند ، Listener ما می بایست به نمونه ای که از کلاس URLLoader ساخته شده است (در این مثال myLoader) پیوست داده شود.<br />
Listener ما توسط رویدادی که به آن افزوده می شود گیره ای با Listener  تابع processXML ایجاد می نماید تا در زمان تکمل بارگزاری تابعی که با نام processXML تعریف می نماییم اجرا شود.<br />
چگونگی انجام این کار را می توانید در زیر مشاهده نمایید:</p>
<pre class="brush: as3; highlight: [4]; title: ; notranslate">
var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest(&quot;iflashlord.xml&quot;));
myLoader.addEventListener(Event.COMPLETE, processXML);
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">رویداد های مختلفی برای افرودن به شنونده وجود دارد که می توانند رویداد های مختلفی که برای شی (Object) موردی نظر ما موجود می باشد را تحت پوشش قرار دهد برای اطلاع بیشتر از این رویداد ها می توانید در راهنمای اکشن اسکریپت نرم افزار فلش بخش مربوطه به کلاس URLLoader را چک نمایید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">کد بالا بعد از اتمام بارگزاری فایل XML تابع processXML را فراخوانی می نماید. ما نیاز داریم ، همان طور که در روش مورد استفاده ما در بالا مشخص شد ،تابعی برای این منظور ایجاد کنیم ، ما نیاز داریم در این تابع  محتوای فایل XML را دریافت نماییم و این محتوا را از طریق مسیری که توسط رویداد تابع می باشد دریافت می کنیم :</p>
<pre class="brush: as3; highlight: [5,6,7,8,9]; title: ; notranslate">
var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest(&quot;iflashlord.xml&quot;));
myLoader.addEventListener(Event.COMPLETE, processXML);
function processXML(e:Event):void
{
	myXML = new XML(e.target.data);
	trace(myXML);
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">اشاره ما در کد بالا توسط e.target به شی (Object) <a href="#_ftn2"></a> فایل XML ی که بارگزاری شده است می باشد.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">شما می توانید تا این مرحله را تست نمایید و محتوای کامل فایل XML را در پنجره خروجی Output فلش مشاهده نمایید.</p>
<h2>پردازش فایل  XML</h2>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در صورتی که نتیجه خروجی را مشاهده کرده باشید ، محتوای فایل XML را بدون هیچ گونه پردازشی دیده اید، تا ایجا این مثال مانند فایل متنی ساده ای بود که شما می توانستید محتوای آن را توسط کلاس LoadVars و یک فیلد متنی بارگزاری نمایید و نمایش دهید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">قدرت XML به این می باشد که توسط ساختار و پیکربندی که دارد و البته پشتیبانی از E4X امکانات خوبی برای نمایش و جستجوی محتوای فایل XML ایجاد می نماید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">ما برای استفاده از E4X به ازای هر گره (node) در فایل XML مان یک مقدار<a href="#_ftn3"></a> دریافت می کنیم و یا از یک node خاصی در فایل مقداری را دریافت می کنیم و سپس با استفاده از آن node خاص صفات (attributes) مربوطه به آن را دریافت می کنیم.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در ابتدا ما می خواهیم که همه فرزندان (children) یک گره (node) را دریافت نماییم برای این کار ما می توانیم از عملگر (Operator) ستاره (*) استفاده نماییم.</p>
<pre class="brush: as3; highlight: [8]; title: ; notranslate">
var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest(&quot;iflashlord.xml&quot;));
myLoader.addEventListener(Event.COMPLETE, processXML);
function processXML(e:Event):void
{
	myXML = new XML(e.target.data);
	trace(myXML.*);
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">به جای ستاره استفاده شده در کد بالا را می توان از متد   .children()استفاده نمود که نتیجه ای مشابه خواهد داشت.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">ما می توانیم به نوبت فقط گره های خاصی را انتخاب نماییم ، در نمونه کد ما این مورد به خوبی احساس نمی شود زیرا همه فرزندان گره های ما از یک نوع هستند ، اما اگر ما انواع گره های مختلفی داشته باشیم و به دنبال آن باشیم که فقط دسته ای انتخاب شده از آن ها را دریافت نماییم ، می توانیم از نام گره (node name) استفاده نماییم و این دسته را دریافت نماییم. برای مثال ما برای دریافت گره IMAGE به تنهایی ،  از کلمه IMAGE استفاده می کنیم :</p>
<pre class="brush: as3; highlight: [8]; title: ; notranslate">
var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest(&quot;iflashlord.xml&quot;));
myLoader.addEventListener(Event.COMPLETE, processXML);
function processXML(e:Event):void
{
	myXML = new XML(e.target.data);
	trace(myXML.IMAGE);
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">خروجی کد در زمان تست :</p>
<pre class="brush: plain; title: ; notranslate">
&lt;IMAGE TITLE=&quot;school&quot;&gt;image1.jpg&lt;/IMAGE&gt;
&lt;IMAGE TITLE=&quot;garden&quot;&gt;image2.jpg&lt;/IMAGE&gt;
&lt;IMAGE TITLE=&quot;shop&quot;&gt;image3.jpg&lt;/IMAGE&gt;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">برای جلو تر روفتن و دریافت محتوای متنی از هر مقدار هر گره ما می توانیم با استفاده دوباره از ستاره (*) این کار را انجام دهیم ، به نمونه دقت کنید :</p>
<pre class="brush: as3; highlight: [8]; title: ; notranslate">
var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest(&quot;iflashlord.xml&quot;));
myLoader.addEventListener(Event.COMPLETE, processXML);
function processXML(e:Event):void
{
	myXML = new XML(e.target.data);
	trace(myXML.IMAGE.*);
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">خروجی کد در زمان تست :<br />
<strong>image1.jpgimage2.jpgimage3.jpg</strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">نتجه بالا در واقع کمکی برای استفاده نمی کند ، بنابر این برای دریافت مقدار گره ها به صورت انتخاب شده از عملگر براکت ([]) استفاده می کنیم و با عددی که در مایل براکت ها قرار می دهیم موقعیت فرزند مورد نظرمان در فایل XML را مشخص می کنیم.</p>
<pre class="brush: as3; highlight: [8]; title: ; notranslate">
var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest(&quot;iflashlord.xml&quot;));
myLoader.addEventListener(Event.COMPLETE, processXML);
function processXML(e:Event):void
{
	myXML = new XML(e.target.data);
	trace(myXML.IMAGE[0]);
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">خروجی کد در زمان تست :</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>image1.jpg</strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">می بایست به یاد داشته باشید که عناصر یک XML List به صورت Zero-relative می باشند (مانند آرایه ها) ، بنابراین اولین آیتم (item) لیست ما در موقعیت ۰ می باشد و نه ۱. و آیتم بعدی در موقعیت ۱ می باشد و بعدی ۲ و به همین صورت تا انتها.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">دریافت محتوای یک گره بسیار ساده می باشد. و دریافت مقدار صفات (attributes) نیز خیلی سختر از مورد  قبلی نمی باشد. برای این کار می بایست از علامت (@)  به همراه نام صفت (attribute) استفاده نماییم. برای پردازش می توانیم برای گروهی از گره ها و یا یک گره انتخاب شده استفاده نماییم. برای گروهی از گره ها می توانیم این کد را به کار ببریم :</p>
<pre class="brush: as3; highlight: [8]; title: ; notranslate">
var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest(&quot;iflashlord.xml&quot;));
myLoader.addEventListener(Event.COMPLETE, processXML);
function processXML(e:Event):void
{
	myXML = new XML(e.target.data);
	trace(myXML.IMAGE.@TITLE);
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">خروجی کد در زمان تست :</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><em>Schoolgardenshop</em></strong><strong><em> </em></strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">این مورد را می توانیم برای گره ی انتخاب شده ای با استفاده از براکت و عدد نیز استفاده نماییم :</p>
<pre class="brush: as3; highlight: [8]; title: ; notranslate">
var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest(&quot;iflashlord.xml&quot;));
myLoader.addEventListener(Event.COMPLETE, processXML);
function processXML(e:Event):void
{
	myXML = new XML(e.target.data);
	trace(myXML.IMAGE[0].@TITLE);
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">خروجی کد در زمان تست :</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><em>school</em></strong><strong><em> </em></strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">با کنترل کننده هایی که در اکشن اسکریپت ۳ برای XML ایجاد شده است ، به ما این امکان را می دهد که گره ها را با جستجو به دنبال مقدار صفتی خاص فیلتر کنیم و  نتیجه را دریافت نماییم. برای مثال ما مقدار گره IMAGE را که صفت title آن برابر با ‘school’ می باشد را دریافت می نماییم :</p>
<pre class="brush: as3; highlight: [8]; title: ; notranslate">
var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest(&quot;iflashlord.xml&quot;));
myLoader.addEventListener(Event.COMPLETE, processXML);
function processXML(e:Event):void
{
	myXML = new XML(e.target.data);
	trace(myXML.IMAGE.(@TITLE==&quot;school&quot;));
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">خروجی کد در زمان تست :</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><em>image1.jpg</em></strong><strong><em> </em></strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">یک متد قابل توجه و مورد استفاده متد .length() می باشد ، این متد می تواند برای شمارش تعداد فرزندان یه گره و یا تعداد نوع انتخاب های از فرزندان یک گره استفاده شود. به عنوان مثال ، برای چک کردن این که چه تعداد گره  IMAGE در Gallery ما موجود می باشد می توانیم از متد length() استفاده نماییم :</p>
<pre class="brush: as3; highlight: [8]; title: ; notranslate">
var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest(&quot;iflashlord.xml&quot;));
myLoader.addEventListener(Event.COMPLETE, processXML);
function processXML(e:Event):void
{
	myXML = new XML(e.target.data);
	trace(myXML.IMAGE.length());
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">خروجی کد در زمان تست می بایست عدد <strong>۳</strong> باشد.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">ما همچنین به راحتی می توانیم تعداد فرزندان موجود در فایل XML مان را بدون توجه به نوع آنها با استفاده از ستاره (*)  مشخص نماییم:</p>
<pre class="brush: as3; highlight: [8]; title: ; notranslate">
var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest(&quot;iflashlord.xml&quot;));
myLoader.addEventListener(Event.COMPLETE, processXML);
function processXML(e:Event):void
{
	myXML = new XML(e.target.data);
	trace(myXML.*.length());
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">خروجی کد در زمان تست می بایست عدد <strong>۳</strong> باشد.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">تا اینجا سعی شد مهم ترین موارد ابتدای برای کار با XML توضیح داده شود ، برای اطلاع کامل و به روز از امکانات و متدهای موجود توصیه می شود حتما به راهنمای فلش مراجعه نمایید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">برای درک بیشتر استفاده از XML به یک تمرین در این مورد می پردازیم.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">تمرین</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در کد تمرین زیر محتوای فایل XML در پنجره خروجی Output نمایش داده می شود برای این تمرین از یک حلقه (loop)<a href="#_ftn4"></a> استفاده شده است که توسط آن به محتوای موجود در فایل XML دسترسی پیدا می کنیم و تک تک همه  آنها را به همراه صفت و شماره در خروجی به نمایش می گذاریم ، این مثال کاربردی بوده یک روش معمول برای استفاده در اکثر پروژه ها می باشد.</p>
<pre class="brush: as3; title: ; notranslate">
var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest(&quot;iflashlord.xml&quot;));
myLoader.addEventListener(Event.COMPLETE, processXML);
function processXML(e:Event):void
{
	myXML = new XML(e.target.data);
	for (var i:int = 0; i&lt;myXML.*.length(); i++)
	{
		trace(&quot;My image number is &quot; + (i+1) + &quot;, it's title is &quot; + myXML.IMAGE[i].@TITLE + &quot; and it's URL is &quot; + myXML.IMAGE[i]);
	}
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در این مطلب با موارد مهمی که در کار با XML  به صورت ابتدای نیاز هست آشنا شدیم.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1389/09/%d8%a8%d8%a7%d8%b1%da%af%d8%b2%d8%a7%d8%b1%db%8c-%d8%a7%d8%b7%d9%84%d8%a7%d8%b9%d8%a7%d8%aa-xml-%d8%aa%d9%88%d8%b3%d8%b7-%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>22</slash:comments>
		</item>
		<item>
		<title>ارتباط پویا بین JavaScript و اکشن اسکریپت ۳</title>
		<link>http://blog.iflashlord.com/1389/05/%d8%a7%d8%b1%d8%aa%d8%a8%d8%a7%d8%b7-%d9%be%d9%88%db%8c%d8%a7-%d8%a8%db%8c%d9%86-javascript-%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/1389/05/%d8%a7%d8%b1%d8%aa%d8%a8%d8%a7%d8%b7-%d9%be%d9%88%db%8c%d8%a7-%d8%a8%db%8c%d9%86-javascript-%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>Sat, 14 Aug 2010 01:10:55 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[ادوبی فلش]]></category>
		<category><![CDATA[اکشن اسکریپت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[جاوا اسکریپت]]></category>
		<category><![CDATA[addCallback]]></category>
		<category><![CDATA[externalinterface.call]]></category>
		<category><![CDATA[ExternalInterfrace]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Object]]></category>
		<category><![CDATA[text field فلش]]></category>
		<category><![CDATA[text در فلش]]></category>
		<category><![CDATA[text فلش]]></category>
		<category><![CDATA[آموزش java script 3 فلش]]></category>
		<category><![CDATA[ارتباط فلش جاوا]]></category>
		<category><![CDATA[اسکریپت]]></category>
		<category><![CDATA[اکشن اسکریپت 3]]></category>
		<category><![CDATA[فلش]]></category>
		<category><![CDATA[فلش جاوا اسکریپت]]></category>
		<category><![CDATA[متن]]></category>

		<guid isPermaLink="false">http://blog.iflashlord.com/1389/05/</guid>
		<description><![CDATA[با توجه به مطلب قبلی که در مورد ارتباط فلش با جاوااسکریپت و فراخوانی توابع جاوا اسکریپت با اکشن اسکریپت ۳ بود شاید این موضوع  که آیا امکان برقرای ارتباط به صورت معکوس این قضیه یعنی ایجاد ارتباط از جاوااسکریپت به فلش وجود دارد یا خیر&#8230; به همین منظور به این ارتباط که به طور [...]]]></description>
			<content:encoded><![CDATA[<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">
	<img src="http://blog.iflashlord.com/wp-content/uploads/2010/08/call_javascript_iflashlord.jpg" alt="iflashlord.com" />
	</p><blockquote><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">با توجه به مطلب قبلی که در مورد<a href="http://blog.iflashlord.com/1389/05/%d9%81%d8%b1%d8%a7%d8%ae%d9%88%d8%a7%d9%86%db%8c-%d8%aa%d8%a7%d8%a8%d8%b9-javascript-%d8%af%d8%b1-%d8%a7%da%a9%d8%b4%d9%86-%d8%a7%d8%b3%da%a9%d8%b1%db%8c%d9%be%d8%aa-3/" target="_blank"> ارتباط فلش با جاوااسکریپت و فراخوانی توابع جاوا اسکریپت با اکشن اسکریپت ۳</a> بود</p></blockquote>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">شاید این موضوع  که آیا امکان برقرای ارتباط به صورت معکوس این قضیه یعنی ایجاد ارتباط از جاوااسکریپت به فلش وجود دارد یا خیر&#8230;<br />
به همین منظور به این ارتباط که به طور مثال شما با کلیک بر روی لینکی که درون صفحه HTML سایت شما هست بتوانید محتوایی درون Text Field فلش که به صورت Dynamic هست رو تغییر بدید ( از این خصوصیت به خلاقیت خودتان می تواند برای فرا خوانی هر تابعی درون فلش نیز استفاده کنید)</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span id="more-497"></span></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">ابتدا می بایست این کلاس را وارد نماییم :</p>
<pre class="brush: as3; title: ; notranslate">
import flash.external.ExternalInterface;
 </pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در این مرحله می بایست بازخورد مربوطه را در کلاس ExternalInterfrace ثبت کنیم :</p>
<pre class="brush: as3; title: ; notranslate">
ExternalInterface.addCallback(&quot;changeText&quot;,changeTheText);
 </pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">خوب همان طور که می بینید متد addCallback دو آرگمان اصلی دارد<br />
changeText : نام تابعی است که ما می بایست درون کد جاوا اسکریپت خود از آن استفاده کنیم<br />
changeTheText : نام تابعی است در فلش که با فراخوانی مورد قبلی در جاوا اسکریپت درون فلش فراخوانی می شود</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">این تابع را در این مثال مشاهده می کنید :</p>
<pre class="brush: as3; title: ; notranslate">
function changeTheText(t:String):void
{
	txtText.text = t;
}
 </pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">این تابع نیز یک آرگمان دارد که شما می بایست مقدار آن را درون کد جاوا اسکریپت توسط تابع رابط که در این مثال changeText می باشد مقدار دهی نمایید<br />
txtText هم یک فیلد متنی داینامیک در فلش می باشد instance Name آن برابر txtText مقدار دهی شده است<br />
.text هم طبق آموزش های قبلی برای مقدار دهی به فیلد به صورت متنی می باشد</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">خوب در نهایت کد مربوطه به بخش HTML ما کدی شبیه به کد زیر می باشد :</p>
<pre class="brush: as3; title: ; notranslate">
&lt;p&gt;&lt;a href=”#” onClick=”JavascriptPopup.changeText(‘it  works for iflashlord.com!’);”&gt;IFLashLord Click me!&lt;/a&gt;&lt;/p&gt;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>نکته مهم</strong><strong> » </strong>JavascriptPopup چیست ؟ یک نام دلخواه می باشد که شما به عنوان شناسه یا همان id کد تگ Object خود تعریف می کنید و از آن برای اشاره به فلش مورد نظر استفاده می کنید</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">به کد زیر توجه کنید :</p>
<pre class="brush: as3; title: ; notranslate">
&lt;object classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0&quot; width=&quot;224&quot; height=&quot;69&quot; align=&quot;middle&quot;&gt;        &lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot; /&gt;       &lt;param value=&quot;false&quot; /&gt;  &lt;param value=&quot;JavascriptPopup.swf&quot; /&gt;&lt;param value=&quot;high&quot; /&gt;&lt;param name=&quot;bgcolor&quot; value=&quot;#ffffff&quot; /&gt; &lt;embed src=&quot;JavascriptPopup.swf&quot; quality=&quot;high&quot; bgcolor=&quot;#ffffff&quot; width=&quot;224&quot; height=&quot;69&quot; name=&quot;JavascriptPopup&quot; align=&quot;middle&quot; allowScriptAccess=&quot;always&quot; allowFullScreen=&quot;false&quot; type=&quot;application/x-shockwave-flash&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot; /&gt; &lt;/object&gt;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">id برابر با JavascriptPopup مقدار دهی شده پس در نتیجه کدHTML قبلی ما اشاره به این فلش در صفحه دارد و شما می توانید بر تعداد زیاد فلش در یک صفحه نیز کنترل داشته باشید<br />
توجه داشته باشید از هر نوع روش برای قرار دادن فلش در صفحه استفاده می کنید می بایست خصوصیت id را مقدار دهی نمایید تا بتوانید در کد خود به فلش مورد نظر اشاره کنید.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1389/05/%d8%a7%d8%b1%d8%aa%d8%a8%d8%a7%d8%b7-%d9%be%d9%88%db%8c%d8%a7-%d8%a8%db%8c%d9%86-javascript-%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>
		<item>
		<title>Array.indexOf و Array.lastIndexOf در اکشن اسکریپت ۳</title>
		<link>http://blog.iflashlord.com/1389/04/array-indexof-lastindexof-%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/1389/04/array-indexof-lastindexof-%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>Sat, 26 Jun 2010 10:48:54 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[ادوبی فلش]]></category>
		<category><![CDATA[اکشن اسکریپت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[Array]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Boolean]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[indexOf]]></category>
		<category><![CDATA[lastIndexOf]]></category>
		<category><![CDATA[Number]]></category>
		<category><![CDATA[Object]]></category>
		<category><![CDATA[Sprite]]></category>
		<category><![CDATA[آرایه]]></category>
		<category><![CDATA[اسکریپت]]></category>
		<category><![CDATA[اندیس نویسی]]></category>
		<category><![CDATA[اکشن اسکریپت 3]]></category>
		<category><![CDATA[حروف اندیس نویسی آنلاین]]></category>
		<category><![CDATA[فلش]]></category>

		<guid isPermaLink="false">http://blog.iflashlord.com/?p=444</guid>
		<description><![CDATA[ساختار کلی : تابع اکشن اسکریپت ۳ خروجی عدد searchElement : عنصری که برای پیدا کرد آن جستجو می کنیم fromIndex : شروع کردن از اندیس تابع اکشن اسکریپت ۳ خروجی عدد searchElement : عنصری که برای پیدا کرد آن جستجو می کنیم fromIndex : شروع کردن از اندیس نحوه استفاده از این متد مثل [...]]]></description>
			<content:encoded><![CDATA[<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">
	<img src="http://blog.iflashlord.com/wp-content/uploads/2010/06/actionscript_indexof_lastindexof_iflashlord.jpg" alt="iflashlord.com" />
	</p><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>ساختار کلی :</strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><em>تابع اکشن اسکریپت ۳ خروجی عدد</em></p>
<pre class="brush: as3; title: ; notranslate">
indexOf(searchElement:*, fromIndex:int = 0):int
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>searchElement  : </strong> عنصری که برای پیدا کرد آن جستجو می کنیم<br />
<strong>fromIndex :</strong> شروع کردن از اندیس</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><em>تابع اکشن اسکریپت ۳ خروجی عدد</em></p>
<pre class="brush: as3; title: ; notranslate">
lastIndexOf(searchElement:*,  fromIndex:int = 0x7fffffff):int
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>searchElement  : </strong> عنصری که برای پیدا کرد آن جستجو می کنیم<br />
<strong>fromIndex :</strong> شروع کردن از اندیس</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span id="more-444"></span></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">نحوه استفاده از این متد مثل استفاده از  String.indexOf و String.lastIndexOf  می باشد و شما می توانید به طور مثال  محل قرار گیری یک Object  در یک Array را بدست آورید و یا محل قرار گیری  یک sprite در یک آرایه<strong> (چندمین عنصر بودن آن)</strong> را بدست آورید<br />
در صورتی که  عنصر مورد نظر شما در آرایه موجود نباشد خروجی<strong> -۱</strong> می باشد</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>حال  به مثالی در این مورد توجه کنید: </strong></p>
<pre class="brush: as3; title: ; notranslate">
var sprite:Sprite = new Sprite();
var  object:Object = new Object();
var boolean:Boolean = true;
var  number:Number = 10;

var array:Array = new Array(sprite, object,  number);
trace(array.indexOf(sprite)); // 0
trace(array.indexOf(number));  // 2
trace(array.indexOf(boolean)); // -1
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">موفق و پیروز باشید</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1389/04/array-indexof-lastindexof-%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>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic (Feed is rejected)
Page Caching using disk: enhanced
Database Caching 1/37 queries in 0.183 seconds using disk: basic
Object Caching 6349/6644 objects using disk: basic

Served from: blog.iflashlord.com @ 2012-02-09 16:21:28 -->
