<?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; actionscript</title>
	<atom:link href="http://blog.iflashlord.com/tag/actionscript/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>Citrus Engine رایگان و اوپن سورس!</title>
		<link>http://blog.iflashlord.com/1390/08/citrus-engine-%d8%b1%d8%a7%db%8c%da%af%d8%a7%d9%86-%d9%88-%d8%a7%d9%88%d9%be%d9%86-%d8%b3%d9%88%d8%b1%d8%b3/</link>
		<comments>http://blog.iflashlord.com/1390/08/citrus-engine-%d8%b1%d8%a7%db%8c%da%af%d8%a7%d9%86-%d9%88-%d8%a7%d9%88%d9%be%d9%86-%d8%b3%d9%88%d8%b1%d8%b3/#comments</comments>
		<pubDate>Sun, 13 Nov 2011 01:19:52 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[ادوبی ایر]]></category>
		<category><![CDATA[ادوبی فلش]]></category>
		<category><![CDATA[اکشن اسکریپت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[عمومی]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[box2d]]></category>
		<category><![CDATA[Citrus]]></category>
		<category><![CDATA[Citrus Engine]]></category>
		<category><![CDATA[Engine]]></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>

		<guid isPermaLink="false">http://blog.iflashlord.com/?p=1618</guid>
		<description><![CDATA[Citrus Engine چست؟ یک موتور بازی سازی با درجه حرفه ای ، قابل گسترش ، و با کیفیت صنعتی برای ساخت بازی فلش می باشد ، این موتور بر اساس شیوه های مدرن برنامه نویسی فلش ساخته شده است و تمرکز آن در کمک به شما برای ساخت یک بازی بسیار جذاب می باشد. برای [...]]]></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/ce2_game_engine_iflashlord.jpg" alt="iflashlord.com" />
	</p><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>Citrus Engine چست؟</strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">یک موتور بازی سازی با درجه حرفه ای ، قابل گسترش ، و با کیفیت صنعتی برای ساخت بازی فلش می باشد ، این موتور بر اساس شیوه های مدرن برنامه نویسی فلش ساخته شده است و تمرکز آن در کمک به شما برای ساخت یک بازی بسیار جذاب می باشد. <a href="http://citrusengine.com/about" target="_blank">برای اطلاعات بیشتر به این صفحه مراجعه کنید</a>.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span id="more-1618"></span></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">کاربرد اصلی این موتور برای ساخت بازی های پلاتفورمر می باشد ، برای هسته این موتور از زبان اکشن اسکریپت ۳ استفاده شده است که بخش تحلیل فیزیکی آن نیز توسط box2d کنترل می شود ، نمونه ای از این دست بازی ها را می توانید در <a href="http://citrusengine.com/" target="_blank">صفحه اول وب سایت Citrus Engine </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">نکته مهم در مورد استفاده از موتورهای بازی سازی ، نیاز داشتن به دانش کمتر در مورد بازی سازی و برنامه نویسی می باشد که می تواند گروه زیادی را وارد دنیای جذاب بازی سازی در فلش نماید..</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"><a href="http://citrusengine.com/" target="_blank">وب سایت رسمی <strong>Citrus Engine</strong></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1390/08/citrus-engine-%d8%b1%d8%a7%db%8c%da%af%d8%a7%d9%86-%d9%88-%d8%a7%d9%88%d9%be%d9%86-%d8%b3%d9%88%d8%b1%d8%b3/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>randomBoolean در اکشن اسکریپت ۳</title>
		<link>http://blog.iflashlord.com/1390/08/randomboolean-%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/randomboolean-%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>Wed, 09 Nov 2011 01:10:32 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[ادوبی فلش]]></category>
		<category><![CDATA[اکشن اسکریپت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[actionscript 3]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Boolean]]></category>
		<category><![CDATA[false]]></category>
		<category><![CDATA[Math]]></category>
		<category><![CDATA[Math.random()]]></category>
		<category><![CDATA[random]]></category>
		<category><![CDATA[randomBoolean]]></category>
		<category><![CDATA[return]]></category>
		<category><![CDATA[true]]></category>
		<category><![CDATA[اتفاقی]]></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=1583</guid>
		<description><![CDATA[در این مطلب اقدام به ایجاد تابعی در اکشن اسکریپت ۳ می کنیم که بتوانم توسط آن به صورت اتفاقی true یا false را بازگشت دهیم. برای این کار ما ابتدا بعد از تعریف نام تابع که در این مثال randomBoolean هستند و بعد از () ها توسط علامت ( : ) نوع خروجی بازگشتی [...]]]></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/random_boolean_as3_iflashlord.jpg" alt="iflashlord.com" />
	</p><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در این مطلب اقدام به ایجاد تابعی در اکشن اسکریپت ۳ می کنیم که بتوانم توسط آن به صورت اتفاقی true یا false را بازگشت دهیم.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span id="more-1583"></span>برای این کار ما ابتدا بعد از تعریف نام تابع که در این مثال randomBoolean هستند و بعد از () ها توسط علامت ( : ) نوع خروجی بازگشتی تابع را Boolean مشخص می کنیم.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">سپس با کمک گرفتم از متد random مربوطه به کلاس Math و ایجاد شرط توسط علامت بزرگتر مساوی و استفاده از خروجی رندوم دریافت شده ، به مقدار true یا false اتفاقی برای بازگشت دادن دسترسی پیدا می کنیم.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><em>حال به کد مربوطه توجه نمایید:</em></p>
<pre class="brush: as3; title: ; notranslate">
function randomBoolean():Boolean
{
	return Math.random() &gt;= 0.5;
}
//تست خروجی
trace(randomBoolean());
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در این تابع وقتی Math.random() اجرا می شود یک عدد رندوم بین ۰ تا ۱ خروجی می دهد در صورتی که این عدد بزرگتر و یا مساوی ۰.۵ باشد برنامه true را return می کند و در غیر این صورت false را بازگشت می دهد.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1390/08/randomboolean-%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>0</slash:comments>
		</item>
		<item>
		<title>ذخیره محتویات MovieClip به صورت عکس</title>
		<link>http://blog.iflashlord.com/1390/08/%d8%b0%d8%ae%db%8c%d8%b1%d9%87-%d9%85%d8%ad%d8%aa%d9%88%db%8c%d8%a7%d8%aa-movieclip-%d8%a8%d9%87-%d8%b5%d9%88%d8%b1%d8%aa-%d8%b9%da%a9%d8%b3/</link>
		<comments>http://blog.iflashlord.com/1390/08/%d8%b0%d8%ae%db%8c%d8%b1%d9%87-%d9%85%d8%ad%d8%aa%d9%88%db%8c%d8%a7%d8%aa-movieclip-%d8%a8%d9%87-%d8%b5%d9%88%d8%b1%d8%aa-%d8%b9%da%a9%d8%b3/#comments</comments>
		<pubDate>Sat, 29 Oct 2011 01:05:55 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[ادوبی فلش]]></category>
		<category><![CDATA[اکشن اسکریپت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[actionscript 3]]></category>
		<category><![CDATA[BitmapData]]></category>
		<category><![CDATA[catch]]></category>
		<category><![CDATA[corelib.swc]]></category>
		<category><![CDATA[File]]></category>
		<category><![CDATA[FileMode.WRITE]]></category>
		<category><![CDATA[FileStream]]></category>
		<category><![CDATA[filesystem]]></category>
		<category><![CDATA[JPEG]]></category>
		<category><![CDATA[JPGEncoder]]></category>
		<category><![CDATA[MovieClip]]></category>
		<category><![CDATA[MovieClip to JPEG]]></category>
		<category><![CDATA[resolvePath]]></category>
		<category><![CDATA[stream.close]]></category>
		<category><![CDATA[swc]]></category>
		<category><![CDATA[trace]]></category>
		<category><![CDATA[try]]></category>
		<category><![CDATA[writeBytes]]></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=1457</guid>
		<description><![CDATA[در این مطلب نحوه ذخیره محتویات یک MovieClip به صورت عکس با فرمت JPEG در Air آموزش داده می‌شود. برای این کار با استفاده از  کلاسه Adobe Encoder یک ByteArray از محتویات MovieClip می‌سازیم و در ادامه این ByteArray را با فرمت JPEG ذخیره می‌کنیم. دانلود کلاس های مورد نیاز : corelib.zip 1- برای شروع [...]]]></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/movieclip_to_jpeg_iflashlord.jpg" alt="iflashlord.com" />
	</p><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در این مطلب نحوه ذخیره محتویات یک MovieClip به صورت عکس با فرمت JPEG در Air آموزش داده می‌شود. برای این کار با استفاده از  کلاسه Adobe Encoder یک ByteArray از محتویات MovieClip می‌سازیم و در ادامه این ByteArray را با فرمت JPEG ذخیره می‌کنیم.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span id="more-1457"></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/10/corelib.zip">corelib.zip</a></p></blockquote>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">1- برای شروع فایل <a href="http://blog.iflashlord.com/wp-content/uploads/2011/10/corelib.zip">corelib.zip</a> را دانلود کرده و آن را Extract کنید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۲- برنامه Flash را اجرا کنید و یک پروژه جدید از نوع Air بسازید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۳- از منوی File گزینه ActionScript Settings را انتخاب کنید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۴- از پنل Library path روی دکمه Add New Path کلیک کنید سپس روی دکمه Browse to SWC file کلیک کنید و فایل corelib.swc را انتخاب کنید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><img class="alignnone size-full wp-image-1458" title="corlib_class_import_iflashlord" src="http://blog.iflashlord.com/wp-content/uploads/2011/10/corlib_class_import_iflashlord.jpg" alt="" width="419" height="179" /></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۵- روی دکمه OK کلیک کنید تا پنجره ActionScript Settings بسته شود.</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">۷- کلاسه‌های مورد نیاز را Import کنید.</p>
<pre class="brush: as3; title: ; notranslate">
import flash.display.BitmapData;
import com.adobe.images.JPGEncoder;
import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">8- یک متغیر از نوع BitmapData ایجاد کنید و طول و عرض آن را به اندازه MovieClip در نظر بگیرید و با دستور Draw محتویات MovieClip را به BitmapData منتقل کنید. (به جای my_mc نام MovieClip خود را وارد نمایید)</p>
<pre class="brush: as3; title: ; notranslate">
var bd:BitmapData = new BitmapData(my_mc.width, my_mc.height);
bd.draw(my_mc);
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">9- یک متغیر جدید از نوع JPGEncoder ایجاد کنید. (عدد داخل پرانتز کیفیت فایل خروجی را مشخص می‌کند و ماکزیمم آن ۱۰۰ می‌باشد)، در ادامه یک متغیر ByteArray هم بسازید.</p>
<pre class="brush: as3; title: ; notranslate">
var jpgEncoder:JPGEncoder = new JPGEncoder( 100 );
var byteArray:ByteArray = jpgEncoder.encode( bd );
</pre>
<ul>
<li>به وسیله متغیرJPGEncoder محتویات BitmapData به فرمت JPEG تبدیل می‌شود و سپس در متغیر ByteArray قرار می‌گیرد.</li>
</ul>
<pre class="brush: as3; title: ; notranslate">
var file:File = new File();
file = file.resolvePath(&quot;c:/test.jpg&quot;);
var stream:FileStream = new FileStream();
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">11- به وسیله کدهای زیر مراحل ذخیره سازی را به اتمام برسانید. در این کدها ابتدا File به صورت FileMode.WRITE در پروژه جاری می‌شود سپس به وسیله دستور writeBytes اطلاعات تبدیل شده ByteArray ذخیره می‌شود. دستور try و catch هم به منظور نمایش خطاهای احتمالی به کار گرفته شده است.</p>
<pre class="brush: as3; title: ; notranslate">
try
{
	stream.open( file , FileMode.WRITE);
	stream.writeBytes(byteArray);
	stream.close();
}
catch (e:Error)
{
	trace(&quot;Error: &quot; + e.message);
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1390/08/%d8%b0%d8%ae%db%8c%d8%b1%d9%87-%d9%85%d8%ad%d8%aa%d9%88%db%8c%d8%a7%d8%aa-movieclip-%d8%a8%d9%87-%d8%b5%d9%88%d8%b1%d8%aa-%d8%b9%da%a9%d8%b3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>slugify کردن متن در اکشن اسکریپت ۳</title>
		<link>http://blog.iflashlord.com/1390/08/slugify-%da%a9%d8%b1%d8%af%d9%86-%d9%85%d8%aa%d9%86-%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/slugify-%da%a9%d8%b1%d8%af%d9%86-%d9%85%d8%aa%d9%86-%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>Tue, 25 Oct 2011 01:51:50 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[ادوبی فلش]]></category>
		<category><![CDATA[اکشن اسکریپت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[const]]></category>
		<category><![CDATA[Flash Builder]]></category>
		<category><![CDATA[Function]]></category>
		<category><![CDATA[pattern]]></category>
		<category><![CDATA[RegExp]]></category>
		<category><![CDATA[Regular-Expressions]]></category>
		<category><![CDATA[replace]]></category>
		<category><![CDATA[slug]]></category>
		<category><![CDATA[slugify]]></category>
		<category><![CDATA[String]]></category>
		<category><![CDATA[toLowerCase]]></category>
		<category><![CDATA[URL]]></category>
		<category><![CDATA[اکشن اسکریپت 3]]></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=1417</guid>
		<description><![CDATA[در این مطلب به slugify پرداخته می شود ، در کل به آماده کردن یک متن برای استفاده در URL و یا به عنوان نام یک فایل توسط حذف کاراکتر هایی که برای این موارد مجاز نمی باشد در استلاح slugify یا slug کردن نامیده می شود. در ادامه ما توسط عبارات با قاعده (Regular-Expressions) [...]]]></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/slugify_iflashlord.jpg" alt="iflashlord.com" />
	</p><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در این مطلب به slugify پرداخته می شود ، در کل به آماده کردن یک متن برای استفاده در URL و یا به عنوان نام یک فایل توسط حذف کاراکتر هایی که برای این موارد مجاز نمی باشد در استلاح slugify یا slug کردن نامیده می شود.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در ادامه ما توسط عبارات با قاعده (Regular-Expressions) و تابع replace در اکشن اسکریپت ۳ ، اقدام به ساخت تابعی می کنیم که این کار را برای ما انجام دهد.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span id="more-1417"></span></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در ابتدا دو RegExp که دو پترن مورد نیاز ما می باشند را به عنوان ثابت (const) تعریف می کنیم، مورد اول pattern1 مربوطه به انتخاب همه حروف الفبا و علامت دش (-) یا همان خط تیره می باشد که در کد زیر توسط (\ا-ی) تمامی حروف الفبای فارسی نیز پشتیبانی می شود، و مورد دوم pattern2 می باشد که فاصله ها یا همان Space های موجود در متن توسط آن انتخاب می شوند.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در نهایت توسط تابع replace مربوطه به string ها در اکشن اسکریپت ۳ متون اضافی حذف  ،و فاصله ها با علامت (-) جا به جا می شوند و در نهایت متن توسط toLowerCase به حروف کوچک تبدیل می شود و بازگشت داده می شود.</p>
<pre class="brush: as3; title: ; notranslate">
function slugify(string:String):String
{
const pattern1:RegExp = /[^\w-\ا-ی ]/g;// همه حروف به جز فاصله و علامت دش (-) ؛
const pattern2:RegExp = / +/g;// یک یا بیش از یک فاصله
var s:String = string;
return s.replace(pattern1, &quot;&quot;).replace(pattern2, &quot;-&quot;).toLowerCase();
}
//مثال
trace(slugify(&quot;تست  متن با فاصله&quot;));
//تست-متن-با-فاصله

trace(slugify(&quot;test  text with space&quot;));
//test-text-with-space
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">اگر می خواهید که تنها کاراکتر های انگلیسی پشتیبانی شود و متون فارسی نیز از خروجی حدف شود تابع بالا را طبق کد زیر تغییر دهید:</p>
<pre class="brush: as3; highlight: [3]; title: ; notranslate">
function slugify(string:String):String
{
const pattern1:RegExp = /[^\w- ]/g;// همه حروف انگلیسی به جز فاصله و علامت دش (-) ؛
const pattern2:RegExp = / +/g;// یک یا بیش از یک فاصله
var s:String = string;
return s.replace(pattern1, &quot;&quot;).replace(pattern2, &quot;-&quot;).toLowerCase();
}
//مثال
trace(slugify(&quot;تست  متن با فاصله&quot;));//-
trace(slugify(&quot;test  text with space&quot;));//test-text-with-space
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">این تابع در مواردی که می خواهید متون را در آدرس های وب (URL) و یا به عنوان نام فایل مورد استفاده قرار دهید ،کاربرد دارد.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1390/08/slugify-%da%a9%d8%b1%d8%af%d9%86-%d9%85%d8%aa%d9%86-%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>0</slash:comments>
		</item>
		<item>
		<title>آپلود فایل به کمک Air و PHP بر روی Server</title>
		<link>http://blog.iflashlord.com/1390/08/%d8%a2%d9%be%d9%84%d9%88%d8%af-%d9%81%d8%a7%db%8c%d9%84-%d8%a8%d9%87-%da%a9%d9%85%da%a9-air-%d9%88-php-%d8%a8%d8%b1-%d8%b1%d9%88%db%8c-server/</link>
		<comments>http://blog.iflashlord.com/1390/08/%d8%a2%d9%be%d9%84%d9%88%d8%af-%d9%81%d8%a7%db%8c%d9%84-%d8%a8%d9%87-%da%a9%d9%85%da%a9-air-%d9%88-php-%d8%a8%d8%b1-%d8%b1%d9%88%db%8c-server/#comments</comments>
		<pubDate>Sun, 23 Oct 2011 01:20:30 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[ادوبی ایر]]></category>
		<category><![CDATA[ادوبی فلش]]></category>
		<category><![CDATA[اکشن اسکریپت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[پی اچ پی]]></category>
		<category><![CDATA[$_FILES]]></category>
		<category><![CDATA[$_POST]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Desktop]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[event.bytesLoaded]]></category>
		<category><![CDATA[event.bytesTotal]]></category>
		<category><![CDATA[fclose]]></category>
		<category><![CDATA[FileFilter]]></category>
		<category><![CDATA[FileReference]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[fopen]]></category>
		<category><![CDATA[fwrite]]></category>
		<category><![CDATA[move_uploaded_file]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ProgressEvent]]></category>
		<category><![CDATA[swf]]></category>
		<category><![CDATA[upload]]></category>
		<category><![CDATA[uploader_script.php]]></category>
		<category><![CDATA[URLRequest]]></category>
		<category><![CDATA[URLRequestMethod]]></category>
		<category><![CDATA[URLRequestMethod.POST]]></category>
		<category><![CDATA[URLVariables]]></category>
		<category><![CDATA[آپلود]]></category>
		<category><![CDATA[آپلود فایل]]></category>
		<category><![CDATA[ایر]]></category>
		<category><![CDATA[فلش]]></category>

		<guid isPermaLink="false">http://blog.iflashlord.com/?p=1394</guid>
		<description><![CDATA[در این مطلب نحوه برقراری ارتباط بین Air و PHP به منظور Upload فایل روی Server آموزش داده می‌شود. ابتدا یک فرم مخصوص آپلود می‌سازیم، سپس کدهای مربوط به PHP را نوشته و فایل‌های مورد نیاز را روی Server قرار می‌دهیم. در نهایت کدهای مربوط به نرم افزار را در Flash اضافه می‌کنیم. برای آپلود [...]]]></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/php_upload_air_iflashlord.jpg" alt="iflashlord.com" />
	</p><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در این مطلب نحوه برقراری ارتباط بین Air و PHP به منظور Upload فایل روی Server آموزش داده می‌شود. ابتدا یک فرم مخصوص آپلود می‌سازیم، سپس کدهای مربوط به PHP را نوشته و فایل‌های مورد نیاز را روی Server قرار می‌دهیم. در نهایت کدهای مربوط به نرم افزار را در Flash اضافه می‌کنیم. برای آپلود فایل‌ها از FileReference، URLRequest و URLVariables استفاده می‌کنیم.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span id="more-1394"></span></p>
<blockquote><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">دانلود سورس : <a href="http://flashcenter.ir/wp-content/uploads/2011/07/source1.zip">Source CS5.5.zip</a></p></blockquote>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">1- برای شروع یک پروژه جدید Air ایجاد کنید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۲- به کمک کامپوننت‌های Button , Text Input و به کمک ابزار Rectangle این فرم را بسازید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><img class="alignnone size-full wp-image-1395" title="upload_gui_iflashlord" src="http://blog.iflashlord.com/wp-content/uploads/2011/10/upload_gui_iflashlord.jpg" alt="" width="346" height="158" /></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۳- یک برنامه Editor باز کنید و این کدها را در آن بنویسید، سپس فایل را با نام uploader_script.php ذخیره کنید.</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php $todayDate = $_POST['todayDate'];
$Name = $_POST['Name'];
$Email = $_POST['Email'];
$filename = $_FILES['Filedata']['name'];
$filetmpname = $_FILES['Filedata']['tmp_name'];
$fileType = $_FILES[&quot;Filedata&quot;][&quot;type&quot;];
$fileSizeMB = ($_FILES[&quot;Filedata&quot;][&quot;size&quot;] / 1024 / 1000);
move_uploaded_file($_FILES['Filedata']['tmp_name'], &quot;images/&quot;.$filename);
$myFile = &quot;logFile.txt&quot;;
$fh = fopen($myFile, ‘a’) or die(&quot;can’t open file&quot;);
$stringData = “\n\ntodayDate: $todayDate \n Name: $Name \n Email: $Email \n ssid: $ssid \n FileName: $filename \n TmpName: $filetmpname \n Type: $fileType \n Size: $fileSizeMB MegaBytes”;
fwrite($fh, $stringData);
fclose($fh);
?&gt;
</pre>
<ul>
<li>در این کدها ابتدا اطلاعات با متد POST دریافت می‌شود.</li>
<li>سپس فایل‌های آپلود شده به داخل فولدر images که در کنار همین فایل PHP باید بسازیم منتقل می‌شوند و نام اصلی فایل برای آن حفظ می‌شود.</li>
<li>در ادامه اطلاعات مربوط به فایل در یک فایل متنی به نام logFile.txt ذخیره می‌شود.</li>
</ul>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۴- حالا فایل PHP را در Server خود آپلود کنید. در کنار این فایل یک فولدر به نام images و یک فایل متنی به نام logFile.txt ایجاد کنید و Permission آنها را ۷۷۷ قرار دهید.</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">۶- حالا باید کلاسه مورد نیاز را import کنید:</p>
<pre class="brush: as3; title: ; notranslate">
import flash.net.URLRequest;
import flash.net.FileFilter;
import flash.net.FileReference;
import flash.events.ProgressEvent;
import flash.events.Event;
import flash.net.URLRequestMethod;
import flash.net.URLVariables;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">7- اطلاعات اولیه مربوط به دکمه‌ها و سایر قسمت‌هایی را که در فرم بالا قابل مشاهده هستند، به صورت زیر تعریف کنید:</p>
<pre class="brush: as3; title: ; notranslate">
upload_btn.enabled = false;
progressBar.width = 1;
uploadMsg.text = &quot;Select a File …&quot;;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۸- متغیر URLRequest را که به آدرس فایل PHP بر روی Server متصل می‌شود، به صورت زیر تعریف کنید:</p>
<pre class="brush: as3; title: ; notranslate">
var URLrequest:URLRequest = new URLRequest(&quot;uploader_script.php&quot;);
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">9- در این آموزش در نظر داریم که کاربر فقط بتواند فایل عکس و متن را با برنامه آپلود کند، بنابراین فیلتر فایل‌ها را به صورت زیر تعریف می‌کنیم و هر دو نوع فیلتر را در یک آرایه قرار می‌دهیم:</p>
<pre class="brush: as3; title: ; notranslate">
var imageTypes:FileFilter = new FileFilter(&quot;Images (*.jpg, *.jpeg, *.gif, *.png)&quot;, &quot;*.jpg; *.jpeg; *.gif; *.png”);
var textTypes:FileFilter = new FileFilter(&quot;Text Files (*.txt, *.rtf)&quot;, &quot;*.txt; *.rtf&quot;);
var allTypes:Array = new Array(imageTypes, textTypes);
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">10- یک FileReference جدید می‌سازیم و Event Listener‌های مربوط به انتخاب موفق فایل توسط کاربر، کامل شدن آپلود و حین پیشرفت آپلود را برای آن به صورت زیر تعریف می‌کنیم:</p>
<pre class="brush: as3; title: ; notranslate">
var fileRef:FileReference = new FileReference();
fileRef.addEventListener(Event.SELECT, syncVariables);
fileRef.addEventListener(Event.COMPLETE, completeHandler);
fileRef.addEventListener(ProgressEvent.PROGRESS, progressHandler);
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">11- حالا Event Listener‌های مربوط به کلیک روی دکمه‌ها را تعریف کنید.</p>
<pre class="brush: as3; title: ; notranslate">
browse_btn.addEventListener(MouseEvent.CLICK, browseBox);
upload_btn.addEventListener(MouseEvent.CLICK, uploadVars);
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">12- تابعی که بعد از کلیک روی دکمه Browse فراخوانی می‌شود، به صورت زیر تعریف می‌شود. بعد از کلیک روی این دکمه کاربر باید پنجره انتخاب فایل را با فیلترهایی که قبلا آماده شدند، ببیند.</p>
<pre class="brush: as3; title: ; notranslate">
function browseBox(event:MouseEvent):void
{
	fileRef.browse(allTypes);
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">13- تابعی که بعد از انتخاب موفق فایل توسط کاربر، فراخوانی می‌شود، به صورت زیر تعریف می‌شود. در این تابع ابتدا آدرس فایل در فیلد مربوطه نشان داده می‌شود. سپس دکمه آپلود فعال و ProgressBar آماده می‌شود، در ادامه اطلاعات مورد نیاز PHP به کمک URLVariables جمع آوری می‌شود و این اطلاعات توسط متد POST برای PHP آماده ارسال می‌شوند.</p>
<pre class="brush: as3; title: ; notranslate">
function syncVariables(event:Event):void
{
	fileDisplay_txt.text = &quot;&quot; + fileRef.name;
	upload_btn.enabled = true;
	progressBar.width = 1;
	var variables:URLVariables = new URLVariables();
	variables.todayDate = new Date();
	variables.Name = &quot;IFLashLord&quot;;
	variables.Email = &quot;test@gmail.com&quot;;
	URLrequest.method = URLRequestMethod.POST;
	URLrequest.data = variables;
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">14- حالا وقت آن رسیده است تابعی را تعریف کنیم که بعد از کلیک روی دکمه Upload فراخوانی می‌شود و اطلاعات را به PHP می‌فرستد. یکی از این اطلاعات، خود فایل انتخاب شده است که با دستور upload توسط FileReference ارسال می‌شود.</p>
<pre class="brush: as3; title: ; notranslate">
function uploadVars(event:MouseEvent):void
{
	uploadMsg.text = &quot;Uploading …&quot;;
	fileRef.upload(URLrequest);
	upload_btn.enabled = false;
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">15- توابع مربوط به کامل شدن و حین پیشرفت آپلود به صورت زیر تعریف می‌شوند.</p>
<pre class="brush: as3; title: ; notranslate">
function completeHandler(event:Event):void
{
	uploadMsg.text = fileRef.name + &quot; has been uploaded.&quot;;
	fileDisplay_txt.text = &quot;&quot;;
}

function progressHandler(event:ProgressEvent):void
{
	progressBar.width = Math.ceil(241 * (event.bytesLoaded / event.bytesTotal));
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در صورتی که نیاز داشتید می‌توانید این پروژه را به صورت swf و AS3 در کنار فایل PHP آپلود کنید. اما اگر قرار است این برنامه بر روی Desktop کار کند حتما باید از پروژه Air استفاده کنید.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1390/08/%d8%a2%d9%be%d9%84%d9%88%d8%af-%d9%81%d8%a7%db%8c%d9%84-%d8%a8%d9%87-%da%a9%d9%85%da%a9-air-%d9%88-php-%d8%a8%d8%b1-%d8%b1%d9%88%db%8c-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>برقراری ارتباط بین Air و Web Service</title>
		<link>http://blog.iflashlord.com/1390/07/%d8%a8%d8%b1%d9%82%d8%b1%d8%a7%d8%b1%db%8c-%d8%a7%d8%b1%d8%aa%d8%a8%d8%a7%d8%b7-%d8%a8%db%8c%d9%86-air-%d9%88-web-service/</link>
		<comments>http://blog.iflashlord.com/1390/07/%d8%a8%d8%b1%d9%82%d8%b1%d8%a7%d8%b1%db%8c-%d8%a7%d8%b1%d8%aa%d8%a8%d8%a7%d8%b7-%d8%a8%db%8c%d9%86-air-%d9%88-web-service/#comments</comments>
		<pubDate>Sat, 22 Oct 2011 02:28:13 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[ادوبی ایر]]></category>
		<category><![CDATA[ادوبی فلش]]></category>
		<category><![CDATA[اکشن اسکریپت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[Adobe Flash Builder]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Browse]]></category>
		<category><![CDATA[BuildServiceRequest]]></category>
		<category><![CDATA[CelsiusToFahrenheit]]></category>
		<category><![CDATA[Components]]></category>
		<category><![CDATA[Drag]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[frameworks]]></category>
		<category><![CDATA[Interface]]></category>
		<category><![CDATA[Library]]></category>
		<category><![CDATA[LoadEvent]]></category>
		<category><![CDATA[MouseEvent]]></category>
		<category><![CDATA[MovieClip]]></category>
		<category><![CDATA[RESULT]]></category>
		<category><![CDATA[ResultEvent]]></category>
		<category><![CDATA[rpc]]></category>
		<category><![CDATA[Settings]]></category>
		<category><![CDATA[SetupWebService]]></category>
		<category><![CDATA[soap]]></category>
		<category><![CDATA[Web Service]]></category>
		<category><![CDATA[WebService]]></category>
		<category><![CDATA[WSDL]]></category>
		<category><![CDATA[اتصال به وب سرویس]]></category>
		<category><![CDATA[ارسال و دریافت اطلاعات]]></category>
		<category><![CDATA[اکشن اسکریپت 3]]></category>
		<category><![CDATA[ایر]]></category>
		<category><![CDATA[دبلیو اس دی ال]]></category>
		<category><![CDATA[سلسیوس]]></category>

		<guid isPermaLink="false">http://blog.iflashlord.com/?p=1379</guid>
		<description><![CDATA[در این مطلب نحوه اتصال به یک Web Service و دریافت اطلاعات آن توسط برنامه Air آموزش داده می‌شود. برای این کار از کلاسه‌های Flex در پروژه Flash استفاده خواهد شد. برای مثال در این درس درجه حرارت سلسیوس را به کمک Web Service به درجه فارنهایت تبدیل می‌کنیم. دانلود سورس : source.zip 1- برنامه [...]]]></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/wsdl_air_iflashlord.jpg" alt="iflashlord.com" />
	</p><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در این مطلب نحوه اتصال به یک Web Service و دریافت اطلاعات آن توسط برنامه Air آموزش داده می‌شود. برای این کار از کلاسه‌های Flex در پروژه Flash استفاده خواهد شد. برای مثال در این درس درجه حرارت سلسیوس را به کمک Web Service به درجه فارنهایت تبدیل می‌کنیم.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span id="more-1379"></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/10/webAir_source.zip">source.zip</a></p></blockquote>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">1- برنامه Flash را اجرا کنید و یک پروژه از نوع Air بسازید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۲- از منوی File گزینه ActionScript Settings را انتخاب کنید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۳- وارد بخش Library Path شوید و روی دکمه Browse To Path کلیک کنید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><img class="alignnone size-full wp-image-1384" title="web1_iflashlord" src="http://blog.iflashlord.com/wp-content/uploads/2011/10/web1_iflashlord.jpg" alt="" width="446" height="400" /></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۴- حالا پوشه libs را با توجه به آدرس و نسخه نصب شده برنامه Adobe Flash Builder انتخاب کنید. برای مثال:</p>
<pre class="brush: plain; title: ; notranslate">
(Install Path:)\Adobe\Adobe Flash Builder 4\sdks\4.0.0\frameworks\libs
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">5- بعد از انتخاب این آدرس در پایین پنجره ActionScript Settings وضعیت Default linkage را روی Merged into code قرار دهید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><img class="alignnone size-full wp-image-1385" title="web2_iflashlord" src="http://blog.iflashlord.com/wp-content/uploads/2011/10/web2_iflashlord.jpg" alt="" width="446" height="400" /></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۶- روی OK کلیک کنید تا کلاسه Flex در پروژه تعریف شود.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۷- حالا از پنل Components و با استفاده از شاخه User Interface یک Button، دو Text Input و دو Label به داخل صفحه Drag کنید و یک فرم شبیه فرم زیر بسازید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><img class="alignnone size-full wp-image-1386" title="web3_iflashlord" src="http://blog.iflashlord.com/wp-content/uploads/2011/10/web3_iflashlord.jpg" alt="" width="175" height="95" /></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۸- در ادامه تنظیمات این Component‌ها را به صورت زیر تغییر دهید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><img class="alignnone size-full wp-image-1387" title="web5_iflashlord" src="http://blog.iflashlord.com/wp-content/uploads/2011/10/web5_iflashlord.jpg" alt="" width="475" height="196" /></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><img class="alignnone size-full wp-image-1388" title="web6_iflashlord" src="http://blog.iflashlord.com/wp-content/uploads/2011/10/web6_iflashlord.jpg" alt="" width="287" height="236" /></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">۱۰- در ابتدا لازمه که کلاسه‌های مورد نیاز را Import کنید.</p>
<pre class="brush: as3; title: ; notranslate">
import flash.display.MovieClip;
import flash.events.MouseEvent;
import mx.rpc.soap.*;
import mx.rpc.events.*;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">11- حالا یک متغیر WebService ایجاد می‌کنیم.</p>
<pre class="brush: as3; title: ; notranslate">
var webService:WebService;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">12- در این آموزش بعد از کلیک روی دکمه convert اطلاعات فیلد متنی درجه سلسیوس به Web Service فرستاده می‌شود و سپس اطلاعات دریافتی از Web Service در فیلد متنی درجه فارنهایت نشان داده می‌شود. پس یک Event Listener برای دکمه تعریف می‌کنیم.</p>
<pre class="brush: as3; title: ; notranslate">
startButton.addEventListener(MouseEvent.CLICK, SetupWebService);
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">13- برای ادامه باید تابع SetupWebService را تعریف کنیم که بعد از کلیک روی دکمه convert فراخوانی می‌شود.</p>
<pre class="brush: as3; title: ; notranslate">
function SetupWebService(event:MouseEvent):void
{
	webService = new WebService();
	webService.loadWSDL(&quot;http://www.w3schools.com/webservices/tempconvert.asmx?WSDL&quot;);
	webService.addEventListener(LoadEvent.LOAD, BuildServiceRequest);
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>در این تابع:</strong></p>
<ul>
<li>لینک http://www.w3schools.com/webservices/tempconvert.asmx فراخوانی می‌شود. به جای این آدرس می‌توانید از هر آدرس دیگری استفاده کنید. دستور ?WSDL این آدرس را به صورت XML تعریف می‌کند تا در Flash قابل استفاده باشد.</li>
<li>بعد از Load شدن محتویات لینک با تعریف یک Event Listener برای webService تابع BuildServiceRequest فراخوانی می‌شود.</li>
</ul>
<pre class="brush: as3; title: ; notranslate">
function BuildServiceRequest(evt:LoadEvent)
{
	webService.CelsiusToFahrenheit(c.text);
	webService.CelsiusToFahrenheit.addEventListener(ResultEvent .RESULT, onResult);
	webService.CelsiusToFahrenheit.addEventListener(FaultEvent. FAULT, onFault);
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>در این تابع:</strong></p>
<ul>
<li>اطلاعات فیلد متنی سلسیوس (c.text) به اپراتور CelsiusToFahrenheit که در لینک Web Service قابل مشاهده است، فرستاده می‌شود.</li>
<li>دو Event Listener برای webService تعریف شده است که اولی بعد از کامل شدن عملیات و دومی‌درصورت بروز خطا فراخوانی می‌شوند.</li>
</ul>
<pre class="brush: as3; title: ; notranslate">
function onResult(event:ResultEvent)
{
	f.text = String(event.result);
}

function onFault(event:FaultEvent)
{
	trace(&quot;error&quot;);
	trace(event.fault.getStackTrace());
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>در تابع onResult:</strong></p>
<ul>
<li>اطلاعات دریافتی از Web Service در فیلد متنی فارنهایت نمایش داده می‌شود.</li>
</ul>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>در تابع onFault:</strong></p>
<ul>
<li>خطای به وجود آمده در فرایند ارسال و دریافت اطلاعات نمایش داده می‌شود.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1390/07/%d8%a8%d8%b1%d9%82%d8%b1%d8%a7%d8%b1%db%8c-%d8%a7%d8%b1%d8%aa%d8%a8%d8%a7%d8%b7-%d8%a8%db%8c%d9%86-air-%d9%88-web-service/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>جستجوی به ترتیب یک لغت در فیلد متنی</title>
		<link>http://blog.iflashlord.com/1390/07/%d8%ac%d8%b3%d8%aa%d8%ac%d9%88%db%8c-%d8%a8%d9%87-%d8%aa%d8%b1%d8%aa%db%8c%d8%a8-%db%8c%da%a9-%d9%84%d8%ba%d8%aa-%d8%af%d8%b1-%d9%81%db%8c%d9%84%d8%af-%d9%85%d8%aa%d9%86%db%8c/</link>
		<comments>http://blog.iflashlord.com/1390/07/%d8%ac%d8%b3%d8%aa%d8%ac%d9%88%db%8c-%d8%a8%d9%87-%d8%aa%d8%b1%d8%aa%db%8c%d8%a8-%db%8c%da%a9-%d9%84%d8%ba%d8%aa-%d8%af%d8%b1-%d9%81%db%8c%d9%84%d8%af-%d9%85%d8%aa%d9%86%db%8c/#comments</comments>
		<pubDate>Thu, 20 Oct 2011 01:11:03 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[ادوبی فلش]]></category>
		<category><![CDATA[اکشن اسکریپت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[actionscript3.0]]></category>
		<category><![CDATA[addEventListener]]></category>
		<category><![CDATA[alwaysShowSelection]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[CLICK]]></category>
		<category><![CDATA[Event Listener]]></category>
		<category><![CDATA[Find Next]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Focus]]></category>
		<category><![CDATA[indexOf]]></category>
		<category><![CDATA[MouseEvent]]></category>
		<category><![CDATA[setSelection]]></category>
		<category><![CDATA[اکشن 3]]></category>
		<category><![CDATA[اکشن اسکریپت 3]]></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=1363</guid>
		<description><![CDATA[در این مطلب نحوه جستجوی به ترتیب (مشابه Find Next) یک لغت در یک فیلد متنی و انتخاب این لغت آموزش داده می‌شود، به طوری که بعد از هر بار کلیک روی دکمه مربوط به Find Next لغت مورد نظر بعدی انتخاب می‌شود. ۱- ابتدا یک دکمه به نام find_next_btn، یک فیلد متنی به نام target_txt به [...]]]></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/search_text_find_next_iflashlord.jpg" alt="iflashlord.com" />
	</p><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در این مطلب نحوه جستجوی به ترتیب (مشابه Find Next) یک لغت در یک فیلد متنی و انتخاب این لغت آموزش داده می‌شود، به طوری که بعد از هر بار کلیک روی دکمه مربوط به Find Next لغت مورد نظر بعدی انتخاب می‌شود.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span id="more-1363"></span></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۱- ابتدا یک دکمه به نام find_next_btn، یک فیلد متنی به نام target_txt به عنوان فیلد متنی اصلی و یک فیلد متنی برای نوشتن کلمه مورد نظر جستجو به نام search_txt بسازید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><img class="alignnone size-full wp-image-1364" title="findnext_iflashlord" src="http://blog.iflashlord.com/wp-content/uploads/2011/10/findnext_iflashlord.png" alt="" width="408" height="263" /></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۲- ابتدا یک متغیر برای پیدا کردن اندیس بعدی و یک Event Listener برای دکمه Find Next می‌سازیم.</p>
<pre class="brush: as3; title: ; notranslate">
var i:Number = 0;
find_next_btn.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">3- حالا تابعی را که بعد از کلیک روی دکمه فراخوانی می‌شود، تعریف می‌کنیم.</p>
<pre class="brush: as3; title: ; notranslate">
function fl_MouseClickHandler(event:MouseEvent):void
{
	target_txt.alwaysShowSelection = true;
	i = target_txt.text.indexOf(search_txt.text,i) + search_txt.length;
	target_txt.setSelection(i - search_txt.length, i);
	if (target_txt.text.indexOf(search_txt.text,i) &lt; 0)
	{
		i = 0;
	}
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>در این تابع:</strong></p>
<ul>
<li>ابتدا با دستور alwaysShowSelection وضعیت نمایش ناحیه انتخاب شده را به صورت همیشه فعال تبدیل می‌کنیم تا حتی زمانی که Focus روی سایر اشیاست هم ناحیه انتخاب شده دیده شود.</li>
<li>مقدار i را برای پیدا کردن لغت بعدی آماده می‌کنیم. برای این کار طول رشته لغت مورد نظر را به اندیس پیدا شده اضافه می‌کنیم.</li>
<li>لغت مورد نظر را به کمک دستور setSelection روی target_txt نشان می‌دهیم.</li>
<li>در صورتی که اندیس آخرین لغت هم پیدا شد، به کمک دستور if جستجو را از ابتدا شروع می‌کنیم. در این دستور فرض شده است که بعد از آخرین لغت پیدا شده، مقدار ۱- برای دستور indexOf برگردانده شود.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1390/07/%d8%ac%d8%b3%d8%aa%d8%ac%d9%88%db%8c-%d8%a8%d9%87-%d8%aa%d8%b1%d8%aa%db%8c%d8%a8-%db%8c%da%a9-%d9%84%d8%ba%d8%aa-%d8%af%d8%b1-%d9%81%db%8c%d9%84%d8%af-%d9%85%d8%aa%d9%86%db%8c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>آشنایی با SQLite در Air &#8211; ساختن table</title>
		<link>http://blog.iflashlord.com/1390/07/%d8%a2%d8%b4%d9%86%d8%a7%db%8c%db%8c-%d8%a8%d8%a7-sqlite-%d8%af%d8%b1-air-%d8%b3%d8%a7%d8%ae%d8%aa%d9%86-table/</link>
		<comments>http://blog.iflashlord.com/1390/07/%d8%a2%d8%b4%d9%86%d8%a7%db%8c%db%8c-%d8%a8%d8%a7-sqlite-%d8%af%d8%b1-air-%d8%b3%d8%a7%d8%ae%d8%aa%d9%86-table/#comments</comments>
		<pubDate>Mon, 17 Oct 2011 03:30:27 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[ادوبی ایر]]></category>
		<category><![CDATA[ادوبی فلش]]></category>
		<category><![CDATA[اس کیو ال لایت]]></category>
		<category><![CDATA[اکشن اسکریپت]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[actionscript 3]]></category>
		<category><![CDATA[addEventListener]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[applicationDirectory]]></category>
		<category><![CDATA[CREATE TABLE]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[filesystem.File]]></category>
		<category><![CDATA[openAsync]]></category>
		<category><![CDATA[resolvePath]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[SQLConnection]]></category>
		<category><![CDATA[SQLErrorEvent]]></category>
		<category><![CDATA[SQLErrorEvent.ERROR]]></category>
		<category><![CDATA[SQLEvent]]></category>
		<category><![CDATA[SQLEvent.OPEN]]></category>
		<category><![CDATA[SQLlite]]></category>
		<category><![CDATA[SQLStatement]]></category>
		<category><![CDATA[اکشن اسکریپت 3]]></category>
		<category><![CDATA[ایر]]></category>
		<category><![CDATA[فلش]]></category>
		<category><![CDATA[پایگاه داده]]></category>
		<category><![CDATA[کد های اکشن اسکریپت 3]]></category>

		<guid isPermaLink="false">http://blog.iflashlord.com/?p=1323</guid>
		<description><![CDATA[در این درس کار با پایگاه داده SQLite در Air  ، نحوه ساختن جدول و فیلدهای مورد نیاز در جدول ساخته شده آموزش داده می‌شود. ۱- برای شروع کار یک پروژه Air ایجاد کنید. ۲- حالا باید کلاسه‌های مورد نیاز را import کنید: ۳- برای ادامه نیاز داریم که ۴ متغیر بسازیم. متغیر conn برای برقراری اتصال [...]]]></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/sqllite_air_iflashlord.jpg" alt="iflashlord.com" />
	</p><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در این درس کار با پایگاه داده SQLite در Air  ، نحوه ساختن جدول و فیلدهای مورد نیاز در جدول ساخته شده آموزش داده می‌شود.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۱- برای شروع کار یک پروژه Air ایجاد کنید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۲- حالا باید کلاسه‌های مورد نیاز را import کنید:</p>
<pre class="brush: as3; title: ; notranslate">
import flash.filesystem.File;
import flash.data.SQLConnection;
import flash.events.SQLEvent;
import flash.events.SQLErrorEvent;
import flash.data.SQLStatement;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span id="more-1323"></span></p>
<pre></pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۳- برای ادامه نیاز داریم که ۴ متغیر بسازیم. متغیر conn برای برقراری اتصال با اطلاعات فایل پایگاه داده استفاده می‌شود، متغیر query وظیفه به جریان انداختن اطلاعات پایگاه داده و انجام عملیات روی اطلاعات را بر عهده دارد، متغیر dbFile برای ایجاد و کنترل فایل پایگاه داده در سیستم عامل به کار می‌رود و متغیر queryText یک String است که وظیفه متغیر query را در آن می‌نویسیم.</p>
<pre class="brush: as3; title: ; notranslate">
var conn:SQLConnection = new SQLConnection();
var query:SQLStatement;
var dbFile:File;
var queryText:String;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۴- برای شروع کار باید فایل پایگاه داده در صورت عدم وجود ساخته شود. به کمک کد applicationDirectory این فایل در کنار فایل اصلی (پروژه یا خروجی) ساخته می‌شود، همانطور که مشخص است نام فایل test.db خواهد بود.</p>
<pre class="brush: as3; title: ; notranslate">
dbFile = File.applicationDirectory.resolvePath(&quot;test.db&quot;);
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۵- برای مدیریت اتصال باید دو Event Listener به متغیر conn اختصاص داده شود تا از اتصال موفق یا نا موفق با فایل پایگاه داده مطلع شویم.</p>
<pre class="brush: as3; title: ; notranslate">
conn.addEventListener(SQLEvent.OPEN, dbOpened);
conn.addEventListener(SQLErrorEvent.ERROR, dbError);
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۶- حالا فایل پایگاه داده را به صورت غیر همزمان (openAsync) باز می‌کنیم. بنابراین می‌توانیم از Listener‌هایی که در بالا برای conn نوشتیم، استفاده کنیم. معمولا برای فایل‌های کم حجم از روش همزمان استفاده می‌شود، درصورت استفاده از روش همزمان امکان استفاده از Listener فراهم نخواهد بود ولی سرعت کار بیشتر و مقدار کدنویسی کمتر می‌شود اما این احتمال وجود دارد که فایل‌های حجیم کامل باز نشوند و اطلاعات به طور کامل در دسترس قرار نگیرد، بنابراین بهتر است برای اطمینان از بارگزاری کامل اطلاعات از روش غیر همزمان استفاده شود.</p>
<pre class="brush: as3; title: ; notranslate">
conn.openAsync(dbFile);
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۷- حالا تابعی را تعریف می‌کنیم که بعد از اتصال موفق و کامل شدن بارگزاری اطلاعات توسط conn فراخوانی می‌شود.</p>
<pre class="brush: as3; title: ; notranslate">
function dbOpened(e:SQLEvent):void
{
	createTable();
}
</pre>
<ul>
<li>در این تابع، تابع createTable فراخوانی می‌شود. این تابعی است که برای ساختن Table و فیلدهای آن در ادامه تعریف می‌شود.</li>
</ul>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۸- سپس تابعی را تعریف می‌کنیم که در صورت اتصال نا موفق conn به فایل پایگاه داده فراخوانی می‌شود.</p>
<pre class="brush: as3; title: ; notranslate">
function dbError(e:SQLErrorEvent):void
{
	trace(&quot;Error DB&quot;);
	trace(e.error);
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۹- نوبت به تعریف تابع createTable رسید که برای ساختن جدول (در صورت عدم وجود) بر روی فایل پایگاه داده به  کار می‌رود.</p>
<pre class="brush: as3; title: ; notranslate">
function createTable():void
{
	query = new SQLStatement();
	query.sqlConnection = conn;
	queryText = &quot;CREATE TABLE IF NOT EXISTS 'website' ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, url TEXT )&quot;;
	query.text = queryText;
	query.addEventListener(SQLEvent.RESULT, queryResult);
	query.addEventListener(SQLErrorEvent.ERROR, queryError);
	query.execute();
}
</pre>
<ul>
<li>در این تابع ابتدا یک SQLStatement جدید ساخته می‌شود.</li>
<li>سپس query اطلاعات conn را به جریان می‌اندازد.</li>
<li>دستور مورد نظر برای اجرا توسط query، در queryText قرار می‌گیرد. طبق این دستور ابتدا یک جدول (در صورت عدم وجود) به نام website ساخته می‌شود که حاوی سه فیلد است. فیلد اول id است که یک INTEGER است و به صورت اتوماتیک یکی یکی زیاد می‌شود، فیلد دوم name از نوع TEXT و فیلد سوم url از نوع TEXT می‌باشد. در این مثال قرار است که این پایگاه داده مجموعه ای از آدرس‌های چند وبسایت باشد.</li>
<li>در ادامه queryText به query معرفی شده است.</li>
<li>برای اطلاع از موفق یا نا موفق بودن فرآیند ساخت جدول، دو Event Listener برای query تعریف شده است.</li>
<li>در انتها اطلاعات جدید با دستور execute روی فایل پایگاه داده اعمال شده اند.</li>
</ul>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۱۰- تابعی که در صورت موفق بودن فرآیند ساخت جدول فراخوانی می‌شود، به قرار زیر است:</p>
<pre class="brush: as3; title: ; notranslate">
function queryResult(e:SQLEvent):void
{
	trace(&quot;table created.&quot;);
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۱۱- تابعی را که در صورت عدم موفقیت آمیز بودن ثبت اطلاعات فراخوانی می‌شود، به صورت زیر تعریف می‌کنیم:</p>
<pre class="brush: as3; title: ; notranslate">
function queryError(e:SQLErrorEvent):void
{
	trace(&quot;Error QUERY&quot;);
	trace(e.error);
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><a href="http://flashcenter.ir/?p=502" target="_blank">+ منبع</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1390/07/%d8%a2%d8%b4%d9%86%d8%a7%db%8c%db%8c-%d8%a8%d8%a7-sqlite-%d8%af%d8%b1-air-%d8%b3%d8%a7%d8%ae%d8%aa%d9%86-table/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; استفاده دوباره از 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>
	</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/43 queries in 0.114 seconds using disk: basic
Object Caching 5244/5492 objects using disk: basic

Served from: blog.iflashlord.com @ 2012-02-05 18:41:33 -->
