خانه » ادوبی فلش » پرینت گرفتن از یک MovieClip

پرینت گرفتن از یک MovieClip

در این مطلب با نحوه پرینت گرفتن از یک MovieClip آشنا می‌شوید. برای این کار از کلاسه PrintJob استفاده می‌شود و مطابق با عرض صفحه کاغذ، اندازه MovieClip تغییر می‌کند.

۱- ابتدا باید کلاس های مورد نیاز import شوند.

import flash.printing.PrintJob;
import flash.geom.Rectangle;

2- حالا تابع printMovieClip را به صورت زیر تعریف کنید:

function printMovieClip(clip:MovieClip)
{
	var printJob:PrintJob = new PrintJob();
	var numPages:int = 0;
	var printArea:Rectangle;
	var printHeight:Number;
	var printY:int = 0;
	if (printJob.start())
	{
		/* تغییر سایت مووی کلیپ برای فیت شدن در عرض صفحه */
		if (clip.width > printJob.pageWidth)
		{
			clip.width = printJob.pageWidth;
			clip.scaleY = clip.scaleX;
		}
		/*  با توجه به طول و عرض صفحه و کشیدگی ایجاد شده برای فیت شدن  printArea   تعریف  */
		printArea = new Rectangle(0,0,printJob.pageWidth / clip.scaleX,printJob.pageHeight / clip.scaleY);
		/* محاسبه تعداد صفحات مورد نیاز با توجه به طول مووی کلیپ */
		numPages = Math.ceil(clip.height / printJob.pageHeight);

		/* print job افزودن صفحه ها به */
		for (var i:int = 0; i < numPages; i++)
		{
			printJob.addPage(clip, printArea);
			printArea.y +=  printArea.height;
		}
		/* به پرینتر print job ارسال  */
		printJob.send();
		/* از حافظه print job حذف   */
		printJob = null;
	}
}

در این تابع:

  • ابتدا متغیرهای لازم برای صفحه بندی و چاپ MovieClip ایجاد شده است.
  • سپس با دستور printJob.start عملیات ارسال صفحات به متغیر printJob آغاز می‌شود.
  • درصورتی که عرض MovieClip از عرض صفحه کاغذ بزرگتر باشد، عرض MovieClip به اندازه عرض کاغذ در آمده و ارتفاع MovieClip به نسبت عرض کوچک می‌شود تا MovieClip کاملا در کاغذ قرار گیرد.
  • سپس ناحیه ای از MovieClip که باید چاپ شود، تعیین می‌شود. این ناحیه فضایی است که در یک صفحه کاغذ جا می‌شود.
  • در ادامه با توجه به ارتفاع تبدیل شده MovieClip تعداد صفحات مورد نیاز در متغیر numPages قرار می‌گیرد.
  • به کمک یک حلقه for و با دستور printJob.addPage صفحات برای چاپ شدن به متغیر printJob اضافه می‌شود و در هر بار ناحیه مورد نیاز برای چاپ با تغییر ارتفاع printArea، تغییر می‌کند.
  • در ادامه با دستور printJob.send اطلاعات به پرینتر ارسال می‌شود و در نهایت متغیر printJob از حافظه پاک می‌شود.

برای استفاده از این تابع فقط کافیست آن را فراخوانی کنید و نام MovieClip مورد نظر را به آن نسبت دهید.

printMovieClip(my_mc);
Print Friendly
تگ ها :
پیوند مطلب قبلی
پیوند مطلب بعدی

درباره بهروز پولادرگ

متولد : ۵ مرداد سال ۱۳۶۷ ، حرفه : ادوبی فلش ، برنامه نویسی و طراحی وب ، طراحی گرافیک ، مالتی مدیا ، نرم افزار های تحت وب

12 نظر

  1. ممنونم دستتون درد نکنه .

  2. ببخشید من ۲ تا فایل فلش دارم و داخل دومی یک متغیر دارم که مقدار دهی شده ،حالا میخواهم از این متغیر در فلش اول استفاده کنم .
    چطور میشه این کار را کرد.
    اگه میشه سورس آن را بگذارید.
    لازم به ذکر است که مطلب ایجاد ارتباط بین as3 و as2 را خوانده ام ولی متوجه نشدم.

    • 
      /// فراخوانی تابع از فایل فلش بارگزاری شده 
      
      var mLoader:Loader = new Loader();
      mLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
      mLoader.load(new URLRequest(&quot;B.swf&quot;));
      
      public function onCompleteHandler(evt:Event)
      {
          var embedSWF:MovieClip = MovieClip(evt.target.content);
          addChild(embedSWF);
          embedSWF.function_OF_B();
      }  
      
      
      /// فراخوانی تابع از فایل اصلی از داخل فایلی که لود شده
      
      
      addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
      function addedToStageHandler(event:Event):void {
        // parent.parent points to the main timeline.
        MovieClip(parent.parent).function_OF_A();
      }  
      
      
  3. با سلام و تشکر از مطالب اموزشی خوبتان
    چطوری می تونم مووی کلیپ رو به اندازه برگ A4 چاپ کنم؟
    من در حال ساخت برنامه ای هستم برای طراحی سوالات امتحانی. توی این برنامه باید یک صفحه باشه که کاربر توی اون سوالات رو طراحی کنه.حالا سوالم اینه که این صفحه (مووی کلیپ) رو در چه سایزی (به پیکسل) درست کنم که موقع پرینت گرفتن دقیقا آنچه که طراحی شده بدون تغییر اندازه توی یک برگه A4 چاپ بشه.

  4. سلام استاد
    اگه چند تا MovieClip در پروژه مون داشته باشیم و بخواهیم از همشون ،یکجا پرینت بگیریم.چکار باید بکنیم؟

  5. سلام
    اگه بخواهیم با زدن یک دکمه،یک فایل exe باز شود باید از چه دستوری استفاده کنیم.
    باید بگم من از دستور fscommand(“exec”,”Test.exe”); استفاده میکنم ولی فایل exe باز نمیشه.
    اگه ممکنه راهنمایی بفرمائید.
    ممنون

    • سلام
      در روشی که شما استفاده می کنید
      ۱ – باید فایلی که در آن تست می کنید برای باز شدن به صورت exe باشد که از فلش توسط خروجی فلش ایجاد شده باشد
      ۲- فایل Exe ای که قرار هست اجرا شود در پوشه fscommand باشد

      موفق و پیروز باشید

  6. سلام چه طوری می شود فایل ورد را به کمک ادوبی فلش فراخوان کرد

    • سلام

      فایل ورد به صورت مستقیم این امکان را ندارد که در فلش باز شود ولی راهکارهای برای آن ایجاد شده مثل تبدیل ورد به فلش که فایل ورد را به فایل swf تبدیل می کند
      برای این برنامه این عبارت (word to swf ) یا (word to flash) را جستجو کنید

      موفق و پیروز باشید

ارسال جواب

آدرس رایانامه شما منتشر نخواهد شد.فیلد های اجباری علامت گزاری شده اند *

*

رفتن به بالای صفحه