<?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; addChild</title>
	<atom:link href="http://blog.iflashlord.com/tag/addchild/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>طراحی خطوط با موس در اکشن اسکریپت ۳</title>
		<link>http://blog.iflashlord.com/1390/10/%d8%b7%d8%b1%d8%a7%d8%ad%db%8c-%d8%ae%d8%b7%d9%88%d8%b7-%d8%a8%d8%a7-%d9%85%d9%88%d8%b3-%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/10/%d8%b7%d8%b1%d8%a7%d8%ad%db%8c-%d8%ae%d8%b7%d9%88%d8%b7-%d8%a8%d8%a7-%d9%85%d9%88%d8%b3-%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>Mon, 09 Jan 2012 23:15:08 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[ادوبی ایر]]></category>
		<category><![CDATA[ادوبی فلش]]></category>
		<category><![CDATA[اکشن اسکریپت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[addChild]]></category>
		<category><![CDATA[addEventListener]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[beginFill]]></category>
		<category><![CDATA[DisplayObject]]></category>
		<category><![CDATA[draw]]></category>
		<category><![CDATA[drawRect]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[graphics]]></category>
		<category><![CDATA[lineStyle]]></category>
		<category><![CDATA[mouse]]></category>
		<category><![CDATA[MouseEvent]]></category>
		<category><![CDATA[MOUSE_DOWN]]></category>
		<category><![CDATA[MOUSE_MOVE]]></category>
		<category><![CDATA[MOUSE_UP]]></category>
		<category><![CDATA[moveTo]]></category>
		<category><![CDATA[removeEventListener]]></category>
		<category><![CDATA[Sprite]]></category>
		<category><![CDATA[stage]]></category>
		<category><![CDATA[stageHeight]]></category>
		<category><![CDATA[stageWidth]]></category>
		<category><![CDATA[اکشن اسکریپت 3]]></category>
		<category><![CDATA[رویداد]]></category>
		<category><![CDATA[طراحی]]></category>
		<category><![CDATA[طراحی خط با موس]]></category>
		<category><![CDATA[فلش]]></category>
		<category><![CDATA[موس]]></category>
		<category><![CDATA[نقاشی]]></category>
		<category><![CDATA[کشیدن خط]]></category>
		<category><![CDATA[کشیدن خطوط]]></category>

		<guid isPermaLink="false">http://blog.iflashlord.com/?p=1830</guid>
		<description><![CDATA[در این مطلب به یک برنامه ساده در فلش می پردازیم که به راحتی با موس بتوانید خطوط مورد نظرتان را طراحی نمایید ، این مطلب به انجام این کار با استفاده از فلش و اکشن اسکریپت ۳ می پردازیم. دانلود سورس : draw_line_with_mouse_iflashlord.zip در ابتدا کلاس های مورد نیاز را وارد می کنیم (البته [...]]]></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/2012/01/draw_line_with_mouse_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"><span id="more-1830"></span></p>
<blockquote><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">دانلود سورس : <a href="http://blog.iflashlord.com/wp-content/uploads/2012/01/draw_line_with_mouse_iflashlord.zip" target="_blank">draw_line_with_mouse_iflashlord.zip</a></p></blockquote>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در ابتدا کلاس های مورد نیاز را وارد می کنیم (البته توجه داشته باشید این کار به صورت خودکار توسط نسخه های جدید فلش انجام می شود و دلیل ذکر این موارد برای اشاره به کلاس های مورد استفاده در مطلب آموزشی می باشد) </p>
<pre class="brush: as3; title: ; notranslate">
import flash.display.Sprite;
import flash.display.Stage;
import flash.events.MouseEvent;
import flash.display.Graphics;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در مرحله بعد یک Sprite ایجاد می کنیم ، این DisplayObject مخزنی برای ذخیره محتوا طراحی شده توسط موس می باشد.</p>
<pre class="brush: as3; title: ; notranslate">
var _sprite:Sprite= new Sprite();
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">حال این Sprite را addChild می کنیم و در ابتدا محیطی که می خواهیم در آن طراحی انجام شود را ایجاد می کنیم برای این کار از drawRect برای طراحی یک مستطیل استفاده می کنیم.</p>
<pre class="brush: as3; title: ; notranslate">
_sprite.graphics.beginFill(0xF0F0F0);
_sprite.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
_sprite.graphics.endFill();
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">برای این که این بخش مشخص باشد ما رنگ F0F0F0 را قرار دادیم شما می توانید هر کد رنگی که مورد نظرتان باشد را وارد نمایید. و در این مثال برای به دست آوردن طول و عرض صفحه استیج از stage.stageHeight و  stage.stageWidth استفاده شده است و برای مختصات شروع ایجاد طرح از ۰ و ۰ که مختصات x و y نقطه شروع می باشد استفاده شده است.<br />
در ضمن endFill برای پایان دادن به یک مقدار دهی مثلا رنگ به شی مستطیل تعریف شده ما می باشد.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">حال می بایست رویدادهای مربوطه به فشردن کلیک چپ موس (MOUSE_DOWN) و رها کردن آن را (MOUSE_UP) تعریف می کنیم و به Sprite تعریف شده اعمال می کنیم.</p>
<pre class="brush: as3; title: ; notranslate">
_sprite.addEventListener(MouseEvent.MOUSE_DOWN, MouseDown);
_sprite.addEventListener(MouseEvent.MOUSE_UP, MouseUp);
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">حال تابع مربوطه به فشرده شدن موس را تعریف می کنیم در این تابع ما توسط متد lineStyle از graphics مربوطه به شی نمایشی Sprite ابتدا قالب بندی خط را تعیین می کنیم ، و توسط متد moveTo مختصات اولیه را مختصات کنونی موس قرار می دهیم .<br />
حال زمان آن رسیده که رویدادی جدید تعریف کنیم تا در زمان حرکت موس تابع MouseMove را فراخوانی کند ، این تابع وظیفه کشیدن خط را بر عهده دارد.</p>
<pre class="brush: as3; title: ; notranslate">
function MouseDown(e:MouseEvent):void
{
_sprite.graphics.lineStyle(1, 0, 1);
_sprite.graphics.moveTo(mouseX, mouseY);
_sprite.addEventListener(MouseEvent.MOUSE_MOVE, MouseMove);
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">تابع MouseMove با استفاده از متد lineTo در هر زمان که موس حرکت کند خطی به نقطه مختصات کنونی موس طراحی می کند. آرگمان اول lineTo مربوطه به مختصات x و آرگمان دوم مربوطه به مختصات y می باشد که در این مثال برای مقدار x از mouseX و y از mouseY که مقدارهای مربوطه به مختصات کنونی موس می باشند استفاده شده است .</p>
<pre class="brush: as3; title: ; notranslate">
function MouseMove(e:MouseEvent):void
{
_sprite.graphics.lineTo(mouseX, mouseY);
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">حال می بایست توسط رویدادی که برای رها کردن کلیک تعیین کردیم در زمان رها کردن کلیک رویداد مربوطه به طراحی در حال حرکت موس و در واقع فراخوانی MouseMove را حذف کنیم.</p>
<pre class="brush: as3; title: ; notranslate">
function MouseUp(e:MouseEvent):void
{
_sprite.removeEventListener(MouseEvent.MOUSE_MOVE, MouseMove);
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>سورس کد کامل برنامه به صورت یکجا :</strong></p>
<pre class="brush: as3; title: ; notranslate">
import flash.display.Sprite;
import flash.display.Stage;
import flash.events.MouseEvent;
import flash.display.Graphics;

var _sprite:Sprite= new Sprite();
addChild(_sprite);
_sprite.graphics.beginFill(0xF0F0F0);
_sprite.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
_sprite.graphics.endFill();

_sprite.addEventListener(MouseEvent.MOUSE_DOWN, MouseDown);
_sprite.addEventListener(MouseEvent.MOUSE_UP, MouseUp);

function MouseDown(e:MouseEvent):void
{
	_sprite.graphics.lineStyle(1, 0, 1);
	_sprite.graphics.moveTo(mouseX, mouseY);
	_sprite.addEventListener(MouseEvent.MOUSE_MOVE, MouseMove);
}

function MouseUp(e:MouseEvent):void
{
	_sprite.removeEventListener(MouseEvent.MOUSE_MOVE, MouseMove);
}
function MouseMove(e:MouseEvent):void
{
	_sprite.graphics.lineTo(mouseX, mouseY);
}
</pre>
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>و بهتر است کمی کدمان را (از نظر رویدادها) بهینه تر نیز کنیم :</strong></p>
<pre class="brush: as3; highlight: [12,13,19]; title: ; notranslate">
import flash.display.Sprite;
import flash.display.Stage;
import flash.events.MouseEvent;
import flash.display.Graphics;

var _sprite:Sprite= new Sprite();
addChild(_sprite);
_sprite.graphics.beginFill(0xF0F0F0);
_sprite.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
_sprite.graphics.endFill();

_sprite.addEventListener(MouseEvent.MOUSE_DOWN, MouseDown , false , 0 , true);
_sprite.addEventListener(MouseEvent.MOUSE_UP, MouseUp , false , 0 , true);

function MouseDown(e:MouseEvent):void
{
	_sprite.graphics.lineStyle(1, 0, 1);
	_sprite.graphics.moveTo(mouseX, mouseY);
	_sprite.addEventListener(MouseEvent.MOUSE_MOVE, MouseMove , false , 0 , true);
}

function MouseUp(e:MouseEvent):void
{
	_sprite.removeEventListener(MouseEvent.MOUSE_MOVE, MouseMove);
}
function MouseMove(e:MouseEvent):void
{
	_sprite.graphics.lineTo(mouseX, mouseY);
}
</pre>
<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">دانلود سورس : <a href="http://blog.iflashlord.com/wp-content/uploads/2012/01/draw_line_with_mouse_iflashlord.zip" target="_blank">draw_line_with_mouse_iflashlord.zip</a></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1390/10/%d8%b7%d8%b1%d8%a7%d8%ad%db%8c-%d8%ae%d8%b7%d9%88%d8%b7-%d8%a8%d8%a7-%d9%85%d9%88%d8%b3-%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>13</slash:comments>
		</item>
		<item>
		<title>اعمال افکت blur به BitmapData در اکشن اسکریپت ۳</title>
		<link>http://blog.iflashlord.com/1390/08/%d8%a7%d8%b9%d9%85%d8%a7%d9%84-%d8%a7%d9%81%da%a9%d8%aa-blur-%d8%a8%d9%87-bitmapdata-%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/%d8%a7%d8%b9%d9%85%d8%a7%d9%84-%d8%a7%d9%81%da%a9%d8%aa-blur-%d8%a8%d9%87-bitmapdata-%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>Mon, 21 Nov 2011 00:51:47 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[ادوبی فلش]]></category>
		<category><![CDATA[اکشن اسکریپت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[actionscript 3]]></category>
		<category><![CDATA[addChild]]></category>
		<category><![CDATA[applyFilter]]></category>
		<category><![CDATA[AS Linkage]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[bitmap]]></category>
		<category><![CDATA[BitmapData]]></category>
		<category><![CDATA[blur]]></category>
		<category><![CDATA[blurApply]]></category>
		<category><![CDATA[BlurFilter]]></category>
		<category><![CDATA[blur_effect_bitmapdata_iflashlord]]></category>
		<category><![CDATA[bmd]]></category>
		<category><![CDATA[Ctrl+R]]></category>
		<category><![CDATA[DisplayObject]]></category>
		<category><![CDATA[effect]]></category>
		<category><![CDATA[effectBlur]]></category>
		<category><![CDATA[flash.display.Bitmap]]></category>
		<category><![CDATA[flash.display.BitmapData]]></category>
		<category><![CDATA[flash.geom.Point]]></category>
		<category><![CDATA[flash.geom.Rectangle]]></category>
		<category><![CDATA[Function]]></category>
		<category><![CDATA[Import]]></category>
		<category><![CDATA[Library]]></category>
		<category><![CDATA[MovieClip]]></category>
		<category><![CDATA[MyPic]]></category>
		<category><![CDATA[Point]]></category>
		<category><![CDATA[rect]]></category>
		<category><![CDATA[rect.topLeft]]></category>
		<category><![CDATA[Rectangle]]></category>
		<category><![CDATA[return]]></category>
		<category><![CDATA[stage]]></category>
		<category><![CDATA[آرگمان]]></category>
		<category><![CDATA[ادوبی]]></category>
		<category><![CDATA[افکت]]></category>
		<category><![CDATA[افکت بلور]]></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=1658</guid>
		<description><![CDATA[در این مطلب می خواهیم به روشی ساده برای اعمال افکت blur به یک شی از نوع BitmapData بپردازیم. توجه داشته باشید این نوع اعمال افکت با افکت ها و Filterهای معمول فلش متفاوت هست و بر روی خود BitmapData اعمال می شود و نه بر روی MovieClip ی که تصویری در آن قرار دارد. [...]]]></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/blur_effect_bitmapdata_as3_iflashlord.jpg" alt="iflashlord.com" />
	</p><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در این مطلب می خواهیم به روشی ساده برای اعمال افکت blur به یک شی از نوع BitmapData بپردازیم. توجه داشته باشید این نوع اعمال افکت با افکت ها و Filterهای معمول فلش متفاوت هست و بر روی خود BitmapData اعمال می شود و نه بر روی MovieClip ی که تصویری در آن قرار دارد.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span id="more-1658"></span></p>
<blockquote><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">دانلود سورس : <a title="blur_effect_bitmapdata_iflashlord" href="http://blog.iflashlord.com/wp-content/uploads/2011/11/blur_effect_bitmapdata_iflashlord.zip">blur_effect_bitmapdata_iflashlord.zip  </a></p></blockquote>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">یک پروژه جدید در نرم افزار ادوبی فلش ایجاد نمایید و یک تصویر را وارد برنامه کنید (Ctrl+R) در این مثال ما از تصویر زیر استفاده کرده ایم.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><img class="alignnone size-full wp-image-1661" title="blur_bitmap_sample_image_iflashlord" src="http://blog.iflashlord.com/wp-content/uploads/2011/11/blur_bitmap_sample_image_iflashlord.jpg" alt="" width="469" height="349" /></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">و کلاس های مورد نیاز را import می کنیم :</p>
<pre class="brush: as3; title: ; notranslate">
import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.geom.Rectangle;
import flash.geom.Point;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در مرحله بعد تابعی با نام blurApply ایجاد می کنیم و آرگمان آن را bmd و از نوع BitmapData قرار می دهیم.</p>
<pre class="brush: as3; title: ; notranslate">
function blurApply(bmd:BitmapData):BitmapData
{
	var effectBlur:BlurFilter = new BlurFilter(4,4,3);
	var rect:Rectangle = new Rectangle(0,0,bmd.width ,bmd.height );
	var point:Point = new Point(0,0);

	bmd.applyFilter(bmd , rect , point , effectBlur);

	return bmd;
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در این تابع ابتدا یک متغیر با نام effectBlur می سازیم و نوع آن را BlurFilter قرار می دهیم و یک نمونه از کلاس BlurFilter را ایجاد می کنیم ، آرگمان های ورودی این کلاس سه مورد می باشد که دو مورد اول برای ایجاد افکت blur در طول و عرض می باشد و مورد سوم مربوطه به کیفیت این افکت که بر روی شی ما اعمال می شود.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در خط بعد ما یک متغیر از نوع Rectangle با نام rect ایجاد می کنیم ایم متغیر در واقع وظیفه مشخص کردن محدوده ای می باشد که قرار است افکت بر روی آن اعمال شود به همین دلیل دو مقدار اولیه که x, y می باشند و محل شروع را مشخص می کنند با ۰ و ۰ مقدار دهی شده اند و دو مقدار بعدی که مربوطه به عرض و طول می باشند با عرض و طول BitmapData که آرگمان ورودی این تابع می باشد مقدار دهی شده اند.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در خط بعد یک Point نیز با مقدار ۰,۰ ایجاد می کنیم که مشخص کننده گوشه سمت چپ و بالایی شی می باشد. به جای این بخش می توانیم از rect.topLeft نیز استفاده کنیم.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در خط بعد توسط applyFilter اقدام به اعمال افکت بر روی شی خود می نماییم، این متد مربوطه به BitmapData می باشد و آرگمان های ورودی آن به ترتیب مربوطه به شی BitmapData و محدوده مشخص کننده ، point و افکت تعریف شده ، می باشد.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">تغییرات مورد نظر ما در این تابع بر روی bmd انجام شده است ، حال bmd را به عنوان مقدار بازگشتی تابع در خط آخر تابع return می کنیم.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">تا این مرحله تابع مورد نظر ما ایجاد شد ، حال به نحوه استفاده آن می پردازیم. تصویری که در ابتدا در پروژه وارد کردیم را از stage حذف می کنیم به بخش Library می رویم و AS Linkage آن را با  MyPic مقدار دهی می کنیم.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><img class="alignnone size-full wp-image-1663" title="as_linkage_sample_image_iflashlord" src="http://blog.iflashlord.com/wp-content/uploads/2011/11/as_linkage_sample_image_iflashlord.png" alt="" width="357" height="346" /></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">حال یک متغیر با نام myPic و از نوع MyPic ایجاد می کنیم و آن را با یک نمونه از MyPic مقدار دهی می کنیم.</p>
<pre class="brush: as3; title: ; notranslate">
var myPic:MyPic = new MyPic();//دریافت تصویر از کتابخانه
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">سپس یک متغیر با نام bit می سازیم و آن را از نوع کلاس Bitmap قرار می دهیم و یک نمونه از کلاس Bitmap را به آن نسبت می دهیم در آرگمان اول مربوطه با کلاس Bitmap مقدار myPic را وارد می کنیم.</p>
<pre class="brush: as3; title: ; notranslate">
var bit:Bitmap = new Bitmap(myPic);
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در مرحله بعد نیز خصوصیت BitmapData مربوطه به متغیر bit را توسط تابع ایجاد شده مقدار دهی می کنیم.</p>
<pre class="brush: as3; title: ; notranslate">
bit.bitmapData = blurApply(bit.bitmapData);
addChild(bit);
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">و در آخر نیز bit را توسط <a title="توابع در اکشن اسکریپت ۳" href="http://blog.iflashlord.com/1388/08/%d8%aa%d9%88%d8%a7%d8%a8%d8%b9-%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/">addChild </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/">DisplayObject</a>) اضافه می کنیم تا در صفحه نمایش داده شود.</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"><img class="alignnone size-full wp-image-1664" title="blured_sample_image_iflashlord" src="http://blog.iflashlord.com/wp-content/uploads/2011/11/blured_sample_image_iflashlord.jpg" alt="" width="469" height="349" /></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">حال اگر در تابع در بخش rect که مربوطه به محدوده ای می باشد که افکت بر روی آن اعمال می شود ، مقدارهای عرض و طول را تقسیم بر ۲ کنیم در واقع افکت بر روی یک چهارم تصویر اعمال می شود.</p>
<pre class="brush: as3; highlight: [4]; title: ; notranslate">
function blurApply(bmd:BitmapData):BitmapData
{
	var effectBlur:BlurFilter = new BlurFilter(4,4,3);
	var rect:Rectangle = new Rectangle(0,0,bmd.width/2 ,bmd.height/2 );
	var point:Point = new Point(0,0);

	bmd.applyFilter(bmd , rect , point , effectBlur);

	return bmd;
}
</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"><img class="alignnone size-full wp-image-1665" title="blured_half_sample_image_iflashlord" src="http://blog.iflashlord.com/wp-content/uploads/2011/11/blured_half_sample_image_iflashlord.jpg" alt="" width="469" height="349" /></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">شما این امکان را دارید که با مقدار دهی دو آرگمان اول rectangle در بخش نمایشی تصویر جا به جایی ایجاد کنید و توسط مقدار دهی دو آرگمان point مختصات محل نمایش بخشی که افکت بر روی آن اعمال شده را تغییر دهید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در پایان تمام کدهایی که برای این پروژه نیاز می باشد را در زیر قرار می دهیم:</p>
<pre class="brush: as3; title: ; notranslate">
import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.geom.Rectangle;
import flash.geom.Point;

function blurApply(bmd:BitmapData):BitmapData
{
	var effectBlur:BlurFilter = new BlurFilter(4,4,3);
	var rect:Rectangle = new Rectangle(0,0,bmd.width ,bmd.height);
	var point:Point = new Point(0,0);

	bmd.applyFilter(bmd , rect , point , effectBlur);

	return bmd;
}

var myPic:MyPic = new MyPic();//دریافت تصویر از کتابخانه
var bit:Bitmap = new Bitmap(myPic);

bit.bitmapData = blurApply(bit.bitmapData);
addChild(bit);
</pre>
<blockquote><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">دانلود سورس : <a title="blur_effect_bitmapdata_iflashlord" href="http://blog.iflashlord.com/wp-content/uploads/2011/11/blur_effect_bitmapdata_iflashlord.zip">blur_effect_bitmapdata_iflashlord.zip  </a></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1390/08/%d8%a7%d8%b9%d9%85%d8%a7%d9%84-%d8%a7%d9%81%da%a9%d8%aa-blur-%d8%a8%d9%87-bitmapdata-%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>11</slash:comments>
		</item>
		<item>
		<title>ایجاد چرخش افقی اشیاء با استفاده از کلاس Matrix</title>
		<link>http://blog.iflashlord.com/1390/08/%d8%a7%db%8c%d8%ac%d8%a7%d8%af-%da%86%d8%b1%d8%ae%d8%b4-%d8%a7%d9%81%d9%82%db%8c-%d8%a8%d8%a7-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%d8%a7%d8%b2-matrix/</link>
		<comments>http://blog.iflashlord.com/1390/08/%d8%a7%db%8c%d8%ac%d8%a7%d8%af-%da%86%d8%b1%d8%ae%d8%b4-%d8%a7%d9%81%d9%82%db%8c-%d8%a8%d8%a7-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%d8%a7%d8%b2-matrix/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 01:34:43 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[ادوبی فلش]]></category>
		<category><![CDATA[اکشن اسکریپت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[addChild]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[beginFill]]></category>
		<category><![CDATA[drawCircle]]></category>
		<category><![CDATA[endFill]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[flip]]></category>
		<category><![CDATA[flipHorizontal]]></category>
		<category><![CDATA[graphics]]></category>
		<category><![CDATA[Horizontal]]></category>
		<category><![CDATA[Matrix]]></category>
		<category><![CDATA[matrix.a]]></category>
		<category><![CDATA[matrix.tx]]></category>
		<category><![CDATA[MovieClip]]></category>
		<category><![CDATA[Point]]></category>
		<category><![CDATA[rotation]]></category>
		<category><![CDATA[transform.matrix]]></category>
		<category><![CDATA[transformPoint]]></category>
		<category><![CDATA[اکشن اسکریپت 3]]></category>
		<category><![CDATA[فلش]]></category>
		<category><![CDATA[ماتریس]]></category>

		<guid isPermaLink="false">http://blog.iflashlord.com/?p=1501</guid>
		<description><![CDATA[در این مطلب به ایجاد چرخش افقی و یا همان filp horizontal با کمک گرفتن از کلاس Matrix می پردازیم و در این میان به توضیحی بر نحوه تعیین کردن مرکز چرخش یک شی به صورت پویا توسط کد اکشن اسکریپت ۳ نیز می پردازیم. دانلود سورس : flipHorizontal_cs4.zip ابتدا کلاس های مورد نیاز را [...]]]></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/matrix_flip_h_as3_iflashlord.jpg" alt="iflashlord.com" />
	</p><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در این مطلب به ایجاد چرخش افقی و یا همان filp horizontal با کمک گرفتن از کلاس Matrix می پردازیم و در این میان به توضیحی بر نحوه تعیین کردن مرکز چرخش یک شی به صورت پویا توسط کد اکشن اسکریپت ۳ نیز می پردازیم.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span id="more-1501"></span></p>
<blockquote><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">دانلود سورس : <a href="http://blog.iflashlord.com/wp-content/uploads/2011/11/flipHorizontal_cs4.zip" target="_blank">flipHorizontal_cs4.zip</a></p></blockquote>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">ابتدا کلاس های مورد نیاز را import می کنیم ، البته توجه داشته باشید در صورتی که کدها را در محیط های برنامه فلش و یا دیگر IDE های اکشن اسکریپت می نویسید در زمان نوشتن کد و در زمانی که توسط ( : ) نوع متغییر ها را مشخص می کنید به صورت خودکار کلاسه مورد نظر شما در ابتدای پروژه Import می شود و خط کد مربوطه به صورت خودکار در ابتدای پروژه شما قرار می گیرد. (البته توجه داشته باشید این امکان در نسخه های قدیمی برنامه های فوق الذکر وجود ندارد)</p>
<pre class="brush: as3; title: ; notranslate">
import flash.geom.Matrix;
import flash.geom.Point;
import flash.display.Graphics;
import flash.display.MovieClip;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">حال برای ایجاد چرخش و برای این که بتوانیم از آن برای اشیای متعدد استفاده کنیم ،آن را به صورت یک تابع ایجاد می کنیم و نام آن را filpHorizontal قرار می دهیم.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">آرگمان اصلی این تابع displayObject هست که شی مورد نظر شما را شامل می شود و آرگمان اختیاری بعدی که برای نمایش مرکز چرخش است که توسط کد ما به شی اعمال می شود در صورتی که این گزینه true باشد در مرکز چرخش شی ما یک دایره سیاه رنگ ایجاد می شود که نمایش دهنده مرکز چرخش کنونی است.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">همان طور که در کد مشخص است این دایره یک MovieClip هست که دایره ای با استفاده از فرامین graphics و استفاده از متد drawCircle در آن ایجاد شده است و به محل مربوطه به مرکز چرخش تغییر مختصات داده شده است و به شی اصلی ما addChild شده است.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">حال بهتر هست کمی در مورد Matrix ها توضیح داده شود تا با ذهنی باز تر به تحلیل کد بپردازیم:</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">یک ماتریس (matrix) دگرگونی شی یک ماتریس ۳ در ۳ با محتویات زیر می باشد.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><img class="alignnone size-full wp-image-1518" title="matrix_props1" src="http://blog.iflashlord.com/wp-content/uploads/2011/11/matrix_props1.jpg" alt="" width="150" height="105" /></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در ماتریس های دگرگونی u ، v و w خواص ارائه قابلیت های اضافی است. کلاس ماتریس (matrix) تنها در فضای دو بعدی عمل می کند ، بنابر این همواره فرض می شود خصوصیت u و v مقدار ۰.۰ و خصوصیت w مقدار ۱.۰ می باشد. در نتیجه ماتریس ما به صورت زیر است :</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><img class="alignnone size-full wp-image-1519" title="matrix_props2" src="http://blog.iflashlord.com/wp-content/uploads/2011/11/matrix_props2.jpg" alt="" width="150" height="105" /></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">شما می توانید ۶ خصوصیت دیگر را در ماتریس شی خود (a,b,c,d,tx,ty) را مقدار دهی کنید (set) و یا مقدار آن را دریافت کنید (get).</p>
<pre class="brush: as3; title: ; notranslate">
function flipHorizontal(displayObject:MovieClip , visiblePoint = true):void
{
	//دریافت متریکس کنونی شی و قرار دادن آن در یک متغیر
	var matrix:Matrix = displayObject.transform.matrix;

	trace(matrix.toString());//(a=1, b=0, c=0, d=1, tx=60.55, ty=207.5)
	//[ a  c  tx ]   =&gt;   [ 1  0  60.55 ]
	//| b  d  ty |   =&gt;   | 0  1  207.5 |
	//[ 0  0   1 ]   =&gt;   [ 0  0   1    ]

	//مشخص کردن محل مرکز به صورت پویا
	var pointX:Number = displayObject.width / 2;
	var pointY:Number = displayObject.height / 2;

	//شعاع دایره مشخص کننده مرکز
	var pointRadius:Number = 5;

	var dspWidthDivide:Point = new Point(pointX,pointY);
	matrix.transformPoint(dspWidthDivide);

	if (visiblePoint)
	{

		//ایجاد دایره مربوطه به نمایش مرکز
		var point:MovieClip = new MovieClip();
		point.graphics.beginFill(0x000000);
		point.graphics.drawCircle(0 , 0 , pointRadius);
		point.graphics.endFill();
		//مختصات دهی دایره با توجه به مرکز تعیین شده;
		point.x = pointX - (pointRadius / 2);
		point.y = pointY - (pointRadius / 2);
		//افزودن دایره به شی مربوطه
		displayObject.addChild(point);
	}

	if (matrix.a &gt; 0)
	{
		matrix.a = -1 * matrix.a;
		matrix.tx = displayObject.width + displayObject.x;
	}
	else
	{
		matrix.a = -1 * matrix.a;
		matrix.tx = displayObject.x - displayObject.width;
	}

	//اعمال ماتریکس جدید به شی مربوطه
	displayObject.transform.matrix = matrix;
}

//usuage
flipHorizontal(myMC1);
myMC1.rotation = 15;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">حال ما برای چرخش افقی از ترکیب ماتریس دَوران و انعکاس استفاده می کنیم ، ابتدا مقدار مربوطه به ماتریس شی را گرفته (displayObject.<strong>transform.matrix</strong>) و در یک متغیر قرار می دهیم و حال می توانید همان طور که در بالا گفته شد به مقدارهای مربوطه به این شی دسترسی داشته باشیم و آنها را تغییر دهیم.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در مرحله بعد در کد زیر ماتریس دریافت شده را trace می کنیم تا از دریافت درست داده ها اطمینان حاصل کنیم. در کد برای درک بیشتر به صورت ماتریس هم توضیح داده شده است.</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">در مرحله بعد شعاع مربوطه به دایره مجازی که مشخص کننده مرکز چرخش هست را مشخص می کنیم.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">سپس متغیر dspWidthDivide را که یک point است را ایجاد می کنیم و مقدارهای دو متغییر pointX و pointY را به عنوان آرگمان های آن وارد می کنیم ، حال می توانیم توسط این متغیر و متد matrix.<strong>transforPoint</strong> مرکز چرخش را به مختصات مورد نظرمان به صورت پویا تغییر دهیم.</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>مرحله اصلی</strong> می باشد ابتدا مقدار <strong>a</strong> شی خود را چک می کنیم در صورتی که بزرگتر از صفر باشد <strong>tx</strong> را برابر با <strong>عرض شی به اضافه مختصات x شی می کنیم</strong> و در غیر این صورت <strong>مختصات x شی را منهای عرض شی می کنیم</strong> و در هر دو حالت a<strong> را برابر با a*-1</strong> مقدار دهی می کنیم.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در آخر نیز به خصوصیت <strong>transform.matrix</strong> شی <strong>displayObject</strong> مان مقدار جدید متغیر matrix را اعمال می کنیم.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در پایان نیز برنامه را تست می کنیم ، myMC1 یک MovieClip هست که توسط تابع برای ایجاد چرخش افقی در آن انتخاب شده است و در آخر نیز برای متوجه شدن چرخش و مبنای چرخش توسط متد rotation چرخشی در شی ایجاد شده است تا با توجه به دایره مشکی متوجه چرخش بر مبنای مرکز چرخش شوید.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1390/08/%d8%a7%db%8c%d8%ac%d8%a7%d8%af-%da%86%d8%b1%d8%ae%d8%b4-%d8%a7%d9%81%d9%82%db%8c-%d8%a8%d8%a7-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%d8%a7%d8%b2-matrix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>چیدمان حلزونی با استفاده از مختصات قطبی</title>
		<link>http://blog.iflashlord.com/1390/07/%da%86%db%8c%d8%af%d9%85%d8%a7%d9%86-%d8%ad%d9%84%d8%b2%d9%88%d9%86%db%8c-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%d8%a7%d8%b2-%d9%85%d8%ae%d8%aa%d8%b5%d8%a7%d8%aa-%d9%82%d8%b7%d8%a8%db%8c/</link>
		<comments>http://blog.iflashlord.com/1390/07/%da%86%db%8c%d8%af%d9%85%d8%a7%d9%86-%d8%ad%d9%84%d8%b2%d9%88%d9%86%db%8c-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%d8%a7%d8%b2-%d9%85%d8%ae%d8%aa%d8%b5%d8%a7%d8%aa-%d9%82%d8%b7%d8%a8%db%8c/#comments</comments>
		<pubDate>Wed, 19 Oct 2011 01:34:40 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[ادوبی ایر]]></category>
		<category><![CDATA[ادوبی فلش]]></category>
		<category><![CDATA[اکشن اسکریپت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[Action Script 3.0]]></category>
		<category><![CDATA[addChild]]></category>
		<category><![CDATA[Array]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Import]]></category>
		<category><![CDATA[Math.cos]]></category>
		<category><![CDATA[Math.PI]]></category>
		<category><![CDATA[Math.sin]]></category>
		<category><![CDATA[MovieClip]]></category>
		<category><![CDATA[radius]]></category>
		<category><![CDATA[scaleX]]></category>
		<category><![CDATA[scaleY]]></category>
		<category><![CDATA[stage]]></category>
		<category><![CDATA[آرایش حلزونی]]></category>
		<category><![CDATA[اکشن 3]]></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=1351</guid>
		<description><![CDATA[هرگاه نیاز به چیدمان‌های دوار و کنترل شکل‌های دایره ای باشد، بهتر است که از مختصات قطبی استفاده شود. با توجه به این که فلش از مختصات کارتزین استفاده می‌کند، باید مختصات قطبی را به مختصات کارتزین تبدیل کرد. در این درس نحوه استفاده از این تبدیل برای دستیابی به آرایش حلزونی MovieClip‌ها آموزش داده [...]]]></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/chideman_halezoni_iflashlord.jpg" alt="iflashlord.com" />
	</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"><span id="more-1351"></span></p>
<blockquote>
<p style="text-align: right;">دانلود سورس : <a title="source_pole_to_2d" href="http://blog.iflashlord.com/wp-content/uploads/2011/10/source_pole_to_2d.zip">source_pole_to_2d</a></p>
</blockquote>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1355" title="halezoni_as3_iflashlord" src="http://blog.iflashlord.com/wp-content/uploads/2011/10/halezoni_as3_iflashlord.jpg" alt="" width="300" height="244" /></p>
<p style="text-align: center;">شکل ۱- آرایش حلزونی MovieClip‌ها</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در شکل ۲ محورهای مختصات کارتزین و قطبی و نحوه تبدیل آن‌ها آمده است.</p>
<p style="text-align: center;"><img class="alignnone size-full wp-image-1356" title="mehvarha_as3_iflashlord" src="http://blog.iflashlord.com/wp-content/uploads/2011/10/mehvarha_as3_iflashlord.jpg" alt="" width="300" height="244" /></p>
<p style="text-align: center;">شکل ۲- نحوه تبدیل مختصات قطبی به کارتزین</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">۱- یک پروژه جدید Action Script 3.0 ایجاد کنید و برای مثال اندازه آن را ۸۰۰ در ۶۰۰ پیکسل در نظر بگیرید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۲- در این درس بعنوان مثال ۶۰ MovieClip ایجاد شده است و به ترتیب از mc1 تا mc60 نامگذاری شده اند. توجه کنید که نقطه مبدا این MovieClip‌ها باید در گوشه چپ و وسط باشد (به فایل sample.zip توجه کنید).</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۳- پنل Actions را باز کنید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۴- کلاسه MovieClip را Import کنید.</p>
<pre class="brush: as3; title: ; notranslate">
var holder:MovieClip = new MovieClip();
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">5- حالا یک آرایه از MovieClip‌ها بسازید.</p>
<pre class="brush: as3; title: ; notranslate">
var fields:Array = [mc1, mc2, mc3, mc4, mc5, mc6, mc7, mc8, mc9, mc10, mc11, mc12, mc13, mc14, mc15, mc16, mc17, mc18, mc19, mc20, mc21, mc22, mc23, mc24, mc25, mc26, mc27, mc28, mc29, mc30, mc31, mc32, mc33, mc34, mc35, mc36, mc37, mc38, mc39, mc40, mc41, mc42, mc43, mc44, mc45, mc46, mc47, mc48, mc49, mc50, mc51, mc52, mc53, mc54, mc55, mc56, mc57, mc58, mc59, mc60];
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">6- در ادامه سه متغیر یرای شعاع، زاویه و محور سوم (در مختصات استوانه ای) ایجاد می‌شود. در این مثال از متغیر scaleX , scaleY برای محور سوم استفاده می‌شود. مقادیر اولیه برای این ۳ متغیر را تعیین کنید.</p>
<pre class="brush: as3; title: ; notranslate">
var radius:Number = 150;
var theta:Number = 0;
var scale:Number = 1;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">7- یک متغیر از نوع MovieClip بعنوان حامل ایجاد کنید.</p>
<pre class="brush: as3; title: ; notranslate">
var holder:MovieClip = new MovieClip();
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">8- سپس به وسیله یک حلقه، MovieClip‌ها در حامل چیده می‌شود.</p>
<pre class="brush: as3; title: ; notranslate">
for (var i:Number = 0; i &lt; fields.length; i++)
{
	var item_holder:MovieClip = MovieClip(fields[i]);
	var radian:Number = theta * Math.PI / 180;
	item_holder.x = radius * Math.cos(radian);
	item_holder.y = radius * Math.sin(radian);
	item_holder.rotation = theta;
	item_holder.scaleX = scale;
	item_holder.scaleY = scale;
	radius -=  2;
	theta +=  7;
	scale -=  0.01;
	holder.addChild(item_holder);
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>در این حلقه:</strong></p>
<ul>
<li>ابتدا item_holder بعنوان شاخص هر MovieClip تعریف شده است.</li>
<li>در خط دوم مقدار زاویه از درجه به رادیان تبدیل شده است.</li>
<li>سپس با توجه به شکل ۲ مقادیر شعاع و زاویه در مختصات قطبی به مقادیر x و y در مختصات کارتزین تبدیل شده است.</li>
<li>در ادامه اندازه هر MovieClip بعنوان محور سوم تعریف شده است.</li>
<li>در نهایت به منظور دستیابی به چیدمان حلزونی مقادیر شعاع، زاویه و اندازه تغییر کرده است تا MovieClip بعدی با مقادیر جدید چیده شود.</li>
<li>سپس MovieClip به حامل اضافه شده است.</li>
</ul>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۹- در آخر موقعیت حامل تعیین و به stage اضافه می‌شود.</p>
<pre class="brush: as3; title: ; notranslate">
holder.x = 350;
holder.y = 250;
addChild(holder);
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1390/07/%da%86%db%8c%d8%af%d9%85%d8%a7%d9%86-%d8%ad%d9%84%d8%b2%d9%88%d9%86%db%8c-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%d8%a7%d8%b2-%d9%85%d8%ae%d8%aa%d8%b5%d8%a7%d8%aa-%d9%82%d8%b7%d8%a8%db%8c/feed/</wfw:commentRss>
		<slash:comments>0</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; unloadAndStop در فلش پلیر ۱۰</title>
		<link>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/</link>
		<comments>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/#comments</comments>
		<pubDate>Tue, 31 May 2011 21:00:28 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[ادوبی ایر]]></category>
		<category><![CDATA[ادوبی فلش]]></category>
		<category><![CDATA[اکشن اسکریپت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[actionscript3]]></category>
		<category><![CDATA[activeate]]></category>
		<category><![CDATA[addChild]]></category>
		<category><![CDATA[addEventListener]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[bitmap]]></category>
		<category><![CDATA[cacheAsBitmap]]></category>
		<category><![CDATA[Deactivate]]></category>
		<category><![CDATA[enterFrame]]></category>
		<category><![CDATA[exitFrame]]></category>
		<category><![CDATA[FileRefrence]]></category>
		<category><![CDATA[frameconstructed]]></category>
		<category><![CDATA[garbage collector]]></category>
		<category><![CDATA[grandchildren]]></category>
		<category><![CDATA[Loader]]></category>
		<category><![CDATA[loader.load]]></category>
		<category><![CDATA[loader.unloadAndStop]]></category>
		<category><![CDATA[memory]]></category>
		<category><![CDATA[MouseEvent.CLICK]]></category>
		<category><![CDATA[MovieClip]]></category>
		<category><![CDATA[nested]]></category>
		<category><![CDATA[socket]]></category>
		<category><![CDATA[Stream]]></category>
		<category><![CDATA[swf]]></category>
		<category><![CDATA[Timer]]></category>
		<category><![CDATA[unloadAndStop]]></category>
		<category><![CDATA[unloadSWF]]></category>
		<category><![CDATA[URLRequest]]></category>
		<category><![CDATA[xmlsocket]]></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=1115</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; unloadAndStop در فلش پلیر ۱۰</strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">متد unloadAndStop در پاسخ به چالش های پیش روی توسعه دهندگان اکشن اسکریپت برای توقف محتوای swf بارگزاری شده و حذف آن از حافظه (Memory) ، به اکشن اسکریپت در فلش پلیر ۱۰ افزوده شد.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">البته این مورد افزوده شده را نمی توان مانند گلوله ای جادویی برای حل همه مشکلاتی که در این زمینه وجود دارد دانست! ، برای روشن شدن بیشتر توضیح می دهیم که این مورد چه کاری انجام می دهد ، در مرحله اول این متد تلاش می کند محتوای بارگزاری شده را برای جمع آوری آماده کند ، و در مرحله بعد به جمع آورنده زباله (Garbage Collector) که می بایست عملیات جمع آوری زباله را انجام دهد ارجاع می شود. شما می توانید از مرحله دوم (که همان جمع آوری زباله gc می باشد)  با دادن مقدار false به عنوان آرگمان اول متد ، جلوگیری به عمل آورید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span id="more-1115"></span></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">با استفاده از این متد دریافت فایل swf باقی مانده در حافظه ساده می باشد ، اما انجام این کار به صورت تصادفی خیلی دشوار تر می باشد.</p>
<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) &#8211; Microphone.setLoopback(0))<br />
<strong>*</strong> حدف فونت های AS3 از جدول فونت های عمومی<br />
<strong>*</strong> ایست ؛ socket ها ، xmlsocket ها ،دانلودهای filerefrence ، و دیگر اشاء مربوطه به دانلود (grandchildren (سطح نوه والد) ) و&#8230;<br />
<strong>* </strong>آزاد کردن bitmap های در ارتباط با cacheAsBitmap و filterها و&#8230;</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>تذکر : </strong>تمامی موارد بالا به صورت بازگشتی اجرا می شوند ، به طوری که این موارد به هر یک از فرزندان تو در تو (nested) و فایل های swf بارگزاری شده در آن ها ، نیز اعمال می شود.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>حال به مثالی در این زمینه می پردازیم :</strong></p>
<pre class="brush: as3; title: ; notranslate">

var loader:Loader = new Loader();

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

addChild( loader );

stage.addEventListener( MouseEvent.CLICK, unloadSWF );

function unloadSWF( e:MouseEvent ):void
{
	//unloadAndStop استفاده از متد
	loader.unloadAndStop();
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در کد بالا ابتدا یک شی Loader ساخته می شود و فایل نمونه آزمایشی ما را با نام sample_content.swf را بارگزاری می کند و سپس شی به DisplayObject افزوده (addChild) می شود.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در مرحله بعد با رویدادی که برای کلیک موس در stage در این مثال ایجاد می کنیم در زمان کلیک تابع unloadSWF را فراخوانی می کنیم</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در این تابع با استفاده از متد unloadAndStop عمل unload را انجام می دهیم.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">موفق و پیروز باشید.</p>
]]></content:encoded>
			<wfw:commentRss>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/feed/</wfw:commentRss>
		<slash:comments>9</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>ذخیره کردن XML به صورت Binary</title>
		<link>http://blog.iflashlord.com/1389/11/%d8%b0%d8%ae%db%8c%d8%b1%d9%87-%da%a9%d8%b1%d8%af%d9%86-xml-%d8%a8%d9%87-%d8%b5%d9%88%d8%b1%d8%aa-binary/</link>
		<comments>http://blog.iflashlord.com/1389/11/%d8%b0%d8%ae%db%8c%d8%b1%d9%87-%da%a9%d8%b1%d8%af%d9%86-xml-%d8%a8%d9%87-%d8%b5%d9%88%d8%b1%d8%aa-binary/#comments</comments>
		<pubDate>Tue, 25 Jan 2011 15:54:46 +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[addChild]]></category>
		<category><![CDATA[addEventListener]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Binary]]></category>
		<category><![CDATA[binary XML]]></category>
		<category><![CDATA[ByteArray]]></category>
		<category><![CDATA[catch]]></category>
		<category><![CDATA[compress]]></category>
		<category><![CDATA[dataFormat]]></category>
		<category><![CDATA[FileRefrence]]></category>
		<category><![CDATA[FileRefrence.save]]></category>
		<category><![CDATA[flash.net.FileReference]]></category>
		<category><![CDATA[MouseEvent]]></category>
		<category><![CDATA[uncompress]]></category>
		<category><![CDATA[URLLoader]]></category>
		<category><![CDATA[URLLoaderDataFormat]]></category>
		<category><![CDATA[URLLoaderDataFormat.BINARY]]></category>
		<category><![CDATA[URLRequest]]></category>
		<category><![CDATA[writeUTFBytes]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[ایکس ام ال]]></category>
		<category><![CDATA[بایت اری]]></category>
		<category><![CDATA[باینری]]></category>
		<category><![CDATA[دو دویی]]></category>
		<category><![CDATA[فلش]]></category>

		<guid isPermaLink="false">http://blog.iflashlord.com/?p=719</guid>
		<description><![CDATA[ذخیره کردن و بارگزاری و استفاده از فایل های متنی و XML در اکشن اسکریپت ۳ به صورت دو دویی (Binary) امکان جدیدی می باشد ، که برای فایل های خارجی با حجم بالا استفاده زیادی دارد. فایل های XML طولانی می بایست به صورت run-time بارگزاری شود ، با ذخیره XML به صورت Binary [...]]]></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/01/xml2binary_iflashlord.jpg" alt="iflashlord.com" />
	</p><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">ذخیره کردن و بارگزاری و استفاده از فایل های متنی و XML در اکشن اسکریپت ۳ به صورت دو دویی (Binary) امکان جدیدی می باشد ، که برای فایل های خارجی با حجم بالا استفاده زیادی دارد.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">فایل های XML طولانی می بایست به صورت run-time بارگزاری شود ، با ذخیره XML به صورت Binary شما می توانید اطلاعات را فشرده سازی (compress) کنید و فایل با حجم کمتری دریافت نمایید.</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 به صورت فشرده شده و در قالب Binary با روشی که به صورت ساده و در قالب متنی ، برای XML استفاده می شود متفاوت است. بنابراین شما می بایست قبل از شروع به کار تصمیم خود را در مورد پروژه خود بگیرید. ممکن هست اطلاعات سری و امنیتی به صورت خارجی دارید و یا اطلاعات دارید که می خواهید بدون نیاز به کد گذاری دوباره بتوانید آن را تغییر دهید،  و در عین حال ترجیح می دهید که محتوا برای انسان غیر قابل درک باشد ، در مرحله بعد به تبدیل محتوای متنی به دودویی می پردازیم.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span id="more-719"></span></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><em><strong><strong>تبدیل XML به دو دویی(Binary) توسط کلاس </strong></strong></em><em><strong><strong>ByteArray</strong></strong></em><em><strong><strong> :</strong></strong></em></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">ابتدا به این موضوع می پردازیم که چگونه اطلاعات XML را در یک ByteArray دخیره کنیم. در کد زیر ما قبلا اطلاعات XML را به صورت رشته متنی (String) در متغیری با نام xmlData قرار داده ایم. که می توانید این کار را یا توسط بارگزاری اطلاعات انجام دهید و یا از XML داخلی فلش استفاده نمایید.</p>
<pre class="brush: as3; title: ; notranslate">

var data:ByteArray = new ByteArray();
data.writeUTFBytes(xmlData); // xmlData فایل ایکس ام ال اصلی ما می باشد
data.compress();
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">با استفاده از این کدها ، هم اکنون متغیر data از نوع ByteArray شامل محتوای فشرده شده فایل XML به صورت دو دویی (Binary) می باشد.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><em><strong><strong>ذخیره به صورت یک فایل </strong></strong></em><em><strong><strong>:</strong></strong></em></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">حال شما اطلاعات Binary از نوع ByeArray را دارید ، شما می توانید آن را به صورت یک فایل خام ذخیره کنید ، برای این کار شما گزینه های زیر را پیش رو دارید:</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۱ &#8211; ارسال به سرور و ذخیره اطلاعات توسط واسط سمت سرور.<br />
۲ &#8211; استفاده از امکاناتی که Adobe Air در اختیار شما قرار می دهد برای ذخیره بر روی دیسک سخت.<br />
۳ &#8211; استفاده از فلش پلیر ورژن ۱۰ برای ذخیره بر روی دیسک سخت.</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">کلاسی می بایست برای این امر از آن استفاده کنیم flash.net.FileReference می باشد، متد (method) مربوطه به ذخیره FileRefrence.save() می باشد و به کاربر امکان دادن مسیر ذخیره فایل را می دهد ، با این امکان شما می توانید اطلاعات خود را مانند یک فایل بر روی سیستم کاربر ذخیره کنید ، البته برای ذخیره کاربر امکان تغییر نام و مسیر فایل مورد نظر شما را خواهد داشت و البته یک مزیت این روش مناسب بودن برای نمونه های تحت وب است.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">به عنوان یک اقدام امنیتی فلش پلیر نتها در صورتی این دستور را اجرا می کند که شما آن را با تعیین یک رویداد به کاربر نمایش دهید مانند (رویداد <strong>MouseEvent.CLICK</strong>).  به هر حال شما نیاز دارید یک دکمه (button) ایجاد کنید و شنونده (listener) مربوطه به رویداد را به آن اضافه کنید و در تابع مربوطه متد <strong>save()</strong> را فراخوانی کنید</p>
<pre class="brush: as3; title: ; notranslate">

function on_buttonClick(evt:MouseEvent):void
{
	var data:ByteArray = new ByteArray();
	data.writeUTFBytes(xmlData);
	// xmlData فایل اصلی ایکس ام ال در قالب متنی;
	data.compress();
	new FileReference  .save(data, &quot;bindata.xml&quot;);
}//&quot;bindata.xml&quot; نام پیش فرض
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">فرمان save() کادر محاوره ای باز می کند که شما می توانید نام فایل و محل ذخیره سازی را به دلخواه مشخص نمایید و بر روی سیستم ذخیره نمایید ، توجه داشته باشید با این که در این مورد ما پسوند فایل را xml قرار دادیم ولی این فایل با فرمت (extension) دو دویی (binary) تبدیل شده است و محتوای آن عملا دیگر برای انسان قابل فهم نمی باشد و در صورتی که با یک ویرایشگر متنی فایل را مشاهده نمایید محتوای آن تشکیل شده است از متون در هم ریخته که مفهومی ندارد و دلیل این امر نیز فشرده شدن و تبدیل به دودویی (binary) می باشد.</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><strong>بارگزاری فایل XML دو دویی (Binary) </strong></em><em><strong><strong>:</strong></strong></em></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">حال شما فایلی دارید که به صورت دو دویی می باشد ولی محتوای آن فایل xml  شماست ، حال برای استفاده و بارگزاری آن شما می بایست از روش زیر استفاده کنید. در نهایت محتوای بارگزاری شده در فلش مانند فایل ساده ی xml بوده و تمامی دسترسی هایی که در زمان بارگزاری و استفاده از یک فایل xml ساده دارید را همچنان بدون هیچ محدودیتی در اختیار دارید.</p>
<pre class="brush: as3; highlight: [2]; title: ; notranslate">

var ldr:URLLoader = new URLLoader();
ldr.dataFormat = URLLoaderDataFormat.BINARY;// ** مطمئن شوید این خط کد را نوشته اید **
ldr.addEventListener(Event.COMPLETE, on_XML);
ldr.addEventListener(IOErrorEvent.IO_ERROR, on_XML);
ldr.load(new URLRequest(pathToXMLFile));
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">این کد برای بارگزاری فایل XML مانند یک فایل XML ساده می باشد ، تنها تفاوتی که وجود دارد در این می باشد که شما می بایست dataFormat را نیز تعیین نمایید و آن را برای فایل دو دویی به صورت URLLoaderDataFormat.BINARY مقدار دهی نمایید. حتی اگر شما این فایل را به صورت ساده بارگزاری کنید کد می بایست به درستی کار کند.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><em><strong><strong>تبدیل فایل دو دویی(Binary) به </strong></strong></em><em><strong><strong>XML </strong></strong></em><em><strong><strong>توسط کلاس </strong></strong></em><em><strong><strong>ByteArray</strong></strong></em><em><strong><strong> :</strong></strong></em></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">بعد از این که بارگزاری داده های binary فایل XML ما انجام شد می بایست اطلاعات دو دویی را به اطلاعات متنی XML تبدیل نماییم.</p>
<pre class="brush: as3; title: ; notranslate">

var xmlData:XML;

function on_XML(evt:Event):void
{
	if (evt.type == Event.COMPLETE)
	{
		var data:* = URLLoader(evt.target).data;
		if (data is ByteArray)
		{
			try
			{
				ByteArray(data).uncompress();
			}
			catch (e:Error)
			{
			}
		}
		xmlData = XML(data);
	}
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">با کد بالا برنامه شما می تواند هر دو نوع فایل text XML و binary XML را دریافت کند ،شما می توانید این کد را حتی در زمانی که فایل XML شما فشرده شده و به صورت دو دویی نمی باشد نیز استفاده کنید. با این کار در صورتی که شما در زمانی تصمیم گرفتید که از اطلاعات XML به صورت فشرده شده Binary در برنامه خود استفاده کنید می توانید این کار را به راحتی و بدون هیچ تغییری انجام دهید و برنامه به درستی این نوع فایل را دریافت خواهد کرد.</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>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1389/11/%d8%b0%d8%ae%db%8c%d8%b1%d9%87-%da%a9%d8%b1%d8%af%d9%86-xml-%d8%a8%d9%87-%d8%b5%d9%88%d8%b1%d8%aa-binary/feed/</wfw:commentRss>
		<slash:comments>8</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>هفت سین یک طراح وب و فلش کار!</title>
		<link>http://blog.iflashlord.com/1388/12/%d9%87%d9%81%d8%aa-%d8%b3%db%8c%d9%86-%db%8c%da%a9-%d8%b7%d8%b1%d8%a7%d8%ad-%d9%88%d8%a8-%d9%88-%d9%81%d9%84%d8%b4-%da%a9%d8%a7%d8%b1/</link>
		<comments>http://blog.iflashlord.com/1388/12/%d9%87%d9%81%d8%aa-%d8%b3%db%8c%d9%86-%db%8c%da%a9-%d8%b7%d8%b1%d8%a7%d8%ad-%d9%88%d8%a8-%d9%88-%d9%81%d9%84%d8%b4-%da%a9%d8%a7%d8%b1/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 22:38:16 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[عمومی]]></category>
		<category><![CDATA[addChild]]></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[فلش کار]]></category>
		<category><![CDATA[نمونه كار بهروز پولاد رگ]]></category>
		<category><![CDATA[هفت سین]]></category>
		<category><![CDATA[هفت سین فلش]]></category>

		<guid isPermaLink="false">http://blog.iflashlord.com/?p=244</guid>
		<description><![CDATA[سلام خدمت دوستان عزیز&#8230;. با توجه به نزدیکی سال نو تصمیم گرفتن هفت سینی برای یک طراح وب بنویسم  ، اگه شما یک وبلاگ نویس هستید از شما دعوت می کنم این کار روی نسبت به علاقه و یا تخصص خودتون انجام بدید : هفت سین یک طراح وب : سی اس اس (Css) سی [...]]]></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/03/7sin_iflashlord.jpg" alt="iflashlord.com" />
	</p><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>سلام خدمت دوستان عزیز&#8230;.</strong><br />
با توجه به نزدیکی سال نو تصمیم گرفتن هفت سینی برای یک طراح وب بنویسم  ، اگه شما یک وبلاگ نویس هستید از شما دعوت می کنم این کار روی نسبت به علاقه و یا تخصص خودتون انجام بدید :</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">سی اس اس (Css)<br />
سی پنل(CPanel &#8211; Control Panel)<br />
سی ام اس (CMS &#8211; Content Management System)<br />
ساب دامین (Sub Domain)<br />
سایت (Site)<br />
سرچ (Search)<br />
سمی کالن (;)</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong> و حالا هفت سین یک<strong> </strong></strong><strong> <span style="color: #ff0000;">فلش کار</span></strong><strong> کمی تخصصی (اکشن اسکریپت ۳) :</strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span id="more-244"></span></strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><img src="http://blog.iflashlord.com/wp-content/uploads/2010/03/7sin89-iflashlord.jpg" alt="http://blog.iflashlord.com/wp-content/uploads/2010/03/7sin89-iflashlord.jpg" width="446" height="300" /></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>send</strong></p>
<pre class="brush: as3; title: ; notranslate">
var sender:LocalConnection = new LocalConnection(  ); sender.send( &quot;_exampleChannel&quot;, &quot;example&quot;, &quot;a string&quot;, 6.5, true);
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>setChildIndex</strong></p>
<pre class="brush: as3; title: ; notranslate">
package {
  import flash.display.*;
  public class SetChildIndexExample extends Sprite {
    public function SetChildIndexExample(  ) {
      // Create three different colored circles and
      // change their coordinates so they are staggered
      // and aren't all located at (0,0).
      var red:Shape = createCircle( 0xFF0000, 10 );
      red.x = 10;
      red.y = 20;
      var green:Shape = createCircle( 0x00FF00, 10 );
      green.x = 15;
      green.y = 25;
      var blue:Shape = createCircle( 0x0000FF, 10 );
      blue.x = 20;
      blue.y = 20;

      // Add the circles, red has index 0, green 1, and blue 2
      addChild( red );
      addChild( green );
      addChild( blue );

      // Move the blue circle underneath the others by placing
      // it at the very bottom of the list, at index 0
      setChildIndex( blue, 0 );
    }

    // Helper function to create a circle shape with a given color
    // and radius
    public function createCircle( color:uint, radius:Number ):Shape {
      var shape:Shape = new Shape(  );
      shape.graphics.beginFill( color );
      shape.graphics.drawCircle( 0, 0, radius );
      shape.graphics.endFill(  );
      return shape;
    }
  }
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>setInterval</strong></p>
<pre class="brush: as3; title: ; notranslate">
package {
    import flash.display.Sprite;
    import flash.events.TimerEvent;
    import flash.utils.Timer;

    public class ExampleApplication extends Sprite {
        // Declare and initialize a variable to store the value
        // of the previous timer reading.
        private var _PreviousTime:Number = 0;

        public function ExampleApplication(  ) {
            var tTimer:Timer = new Timer(500, 10);
            tTimer.addEventListener(TimerEvent.TIMER, onTimer);
            tTimer.start(  );
        }

        private function onTimer(event:TimerEvent):void {
            // Output the difference between the current timer value and
            // its value from the last time the function was called.
            trace(flash.utils.getTimer(  ) - _PreviousTime);
            _PreviousTime = flash.utils.getTimer(  );
        }
    }
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>Sound</strong></p>
<pre class="brush: as3; title: ; notranslate">
package {
    import flash.display.Sprite;
    import flash.media.Sound;
    import flash.net.URLRequest;

    public class LoadSoundExample extends Sprite {
        private var _sound:Sound;

        public function LoadSoundExample (  ) {
            _sound = new Sound(  );
            _sound.load(new URLRequest(&quot;song.mp3&quot;));
        }
    }
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>substr</strong></p>
<pre class="brush: as3; title: ; notranslate">
var example:String = &quot;Bunnies&quot;;
trace( example.substr( 0 ) );      // Displays: Bunnies
trace( example.substr( 0, 3 ) );   // Displays: Bun
trace( example.substr( 3, 3 ) );   // Displays: nie
trace( example.substr( -1 ) );     // Displays: s
trace( example.substr( -2, 5 ) );  // Displays: es
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>setColor</strong></p>
<pre class="brush: as3; title: ; notranslate">
package {
  import flash.display.*;
  import flash.net.URLRequest;
  import flash.events.Event;

  public class LoaderExample extends Sprite {

    private var _loader:Loader;

    public function LoaderExample(  ) {
      // Create the Loader and add it to the display list
      _loader = new Loader(  );
      addChild( _loader );

      // Add the event handler to interact with the loaded movie
      _loader.contentLoaderInfo.addEventListener( Event.INIT, handleInit );

      // Load the external movie
      _loader.load( new URLRequest( &quot;ExternalMovie.swf&quot; ) );
    }

    // Event handler called when the externally loaded movie is
    // ready to be interacted with
    private function handleInit( event:Event ):void {
      // Typed as * here because the type is not known at compile-time.
      var movie:* = _loader.content;

      // Calls a method in the external movie to get data out
      // Displays: 0
      trace( movie.getColor(  ) );

      // Calls a method in the external movie to set data.
      // Sets the color in the external movie, which draws
      // a circle with the new color, in this case red
      movie.setColor( 0xFF0000 );
    }
  }
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>setTextFormat</strong></p>
<pre class="brush: as3; title: ; notranslate">
field.html = true;
field.htmlText = &quot;&lt;b&gt;Bold text&lt;/b&gt; &lt;u&gt;Underlined text&lt;/u&gt;&quot;;
var formatter:TextFormat = new TextFormat(  );
formatter.bold = true;       // Bold the text
formatter.color = 0xFFFF00;  // Make the text yellow
formatter.blockIndent = 5;   // Adjust the margin by 5 points
field.setTextFormat(formatter);

field.text = &quot;this is sample text&quot;;
field.setTextFormat(formatter);    // Formatting applied
field.text = &quot;this is new text&quot;;   // No formatting applied
field.setTextFormat(formatter);    // Formatting reapplied
field.text += &quot;appended text&quot;;     // Formatting removed
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">پیشا پیش سال نو مبارک باد.. <img src='http://blog.iflashlord.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1388/12/%d9%87%d9%81%d8%aa-%d8%b3%db%8c%d9%86-%db%8c%da%a9-%d8%b7%d8%b1%d8%a7%d8%ad-%d9%88%d8%a8-%d9%88-%d9%81%d9%84%d8%b4-%da%a9%d8%a7%d8%b1/feed/</wfw:commentRss>
		<slash:comments>10</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/38 queries in 0.153 seconds using disk: basic
Object Caching 7435/7745 objects using disk: basic

Served from: blog.iflashlord.com @ 2012-02-09 16:27:03 -->
