خانه » ادوبی ایر » طراحی خطوط با موس در اکشن اسکریپت ۳

طراحی خطوط با موس در اکشن اسکریپت ۳

طراحی خطوط با موس در اکشن اسکریپت ۳

در این مطلب به یک برنامه ساده در فلش می پردازیم که به راحتی با موس بتوانید خطوط مورد نظرتان را طراحی نمایید ، این مطلب به انجام این کار با استفاده از فلش و اکشن اسکریپت ۳ می پردازیم.


دانلود سورس
در ابتدا کلاس های مورد نیاز را وارد می کنیم (البته توجه داشته باشید این کار به صورت خودکار توسط نسخه های جدید فلش انجام می شود و دلیل ذکر این موارد برای اشاره به کلاس های مورد استفاده در مطلب آموزشی می باشد)

import flash.display.Sprite;
import flash.display.Stage;
import flash.events.MouseEvent;
import flash.display.Graphics;

در مرحله بعد یک Sprite ایجاد می کنیم ، این DisplayObject مخزنی برای ذخیره محتوا طراحی شده توسط موس می باشد.

var _sprite:Sprite= new Sprite();

حال این Sprite را addChild می کنیم و در ابتدا محیطی که می خواهیم در آن طراحی انجام شود را ایجاد می کنیم برای این کار از drawRect برای طراحی یک مستطیل استفاده می کنیم.

_sprite.graphics.beginFill(0xF0F0F0);
_sprite.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
_sprite.graphics.endFill();

برای این که این بخش مشخص باشد ما رنگ F0F0F0 را قرار دادیم شما می توانید هر کد رنگی که مورد نظرتان باشد را وارد نمایید. و در این مثال برای به دست آوردن طول و عرض صفحه استیج از stage.stageHeight و  stage.stageWidth استفاده شده است و برای مختصات شروع ایجاد طرح از ۰ و ۰ که مختصات x و y نقطه شروع می باشد استفاده شده است.
در ضمن endFill برای پایان دادن به یک مقدار دهی مثلا رنگ به شی مستطیل تعریف شده ما می باشد.

حال می بایست رویدادهای مربوطه به فشردن کلیک چپ موس (MOUSE_DOWN) و رها کردن آن را (MOUSE_UP) تعریف می کنیم و به Sprite تعریف شده اعمال می کنیم.

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

حال تابع مربوطه به فشرده شدن موس را تعریف می کنیم در این تابع ما توسط متد lineStyle از graphics مربوطه به شی نمایشی Sprite ابتدا قالب بندی خط را تعیین می کنیم ، و توسط متد moveTo مختصات اولیه را مختصات کنونی موس قرار می دهیم .
حال زمان آن رسیده که رویدادی جدید تعریف کنیم تا در زمان حرکت موس تابع MouseMove را فراخوانی کند ، این تابع وظیفه کشیدن خط را بر عهده دارد.

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

تابع MouseMove با استفاده از متد lineTo در هر زمان که موس حرکت کند خطی به نقطه مختصات کنونی موس طراحی می کند. آرگمان اول lineTo مربوطه به مختصات x و آرگمان دوم مربوطه به مختصات y می باشد که در این مثال برای مقدار x از mouseX و y از mouseY که مقدارهای مربوطه به مختصات کنونی موس می باشند استفاده شده است .

function MouseMove(e:MouseEvent):void
{
_sprite.graphics.lineTo(mouseX, mouseY);
}

حال می بایست توسط رویدادی که برای رها کردن کلیک تعیین کردیم در زمان رها کردن کلیک رویداد مربوطه به طراحی در حال حرکت موس و در واقع فراخوانی MouseMove را حذف کنیم.

function MouseUp(e:MouseEvent):void
{
_sprite.removeEventListener(MouseEvent.MOUSE_MOVE, MouseMove);
}

سورس کد کامل برنامه به صورت یکجا :

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);
}

و بهتر است کمی کدمان را (از نظر رویدادها) بهینه تر نیز کنیم :

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);
}

حال می تونیم برنامه رو تست کنیم ، با فشردن کلیک چپ و حرکت موس می توانید خطوط مورد نظر خودتان را طراحی کنید.


دانلود سورس

Print Friendly
تگ ها :
پیوند مطلب قبلی
پیوند مطلب بعدی

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

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

56 نظر

  1. سلام آقا بهتون میل زدم اما جواب ندادین در مورد یک سفارش اگه تمایل دارین میشه ادد یا میل بزنید تا توضیح بدم

  2. سلام خسته نباشید
    یه سوال فوری ازتون داشتم
    با اکشن اسکریپت ۲ چظور میشه مثلا روی چند دکمه فوکوس کرد ولی اون مربع زرد رنگ روی دکمه ها نیاد؟

  3. بازم سلام دستت درد نکنه
    ببخشید حالا اگر بخواهیم ببینیم فوکوس روی چه دکمه ای هست چیکار باید کرد؟

    • سلام

      برای کنترل فکوس می بایست از فکوس منیجر استفاده کنید

      import fl.managers.FocusManager;
      var focus:FocusManager = new FocusManager(this);
      
      function traceFocus():void
      {
          trace(focus.getFocus())
      }
      
      
      setInterval(traceFocus,1000);
      

      برای مثال ایم که هر ثانیه مورد فکوس شده را trace می کند
      موفق و پیروز باشید

  4. آقا بهروز میل زدم اما بازم جوابی نیومد D:

  5. سلام مرد شریف
    خیلی ممنونم از تمامیه مطالب آموزشی شما و همینطور از حوصلتون که به همه پیامها به خوبی جواب میدید

  6. سلام داداش خسته نباشی
    باید بگم کارت درسته و سایتتم دل چسبه
    یه سئوال چه کاری انجام میدین وقتی رو فلش شما راست کلیک می شه منوی سفارشی براتون باز می شه درست مثله هدر سایت شما؟
    اگه راهنماییم کنید ممنوننتون میشم

  7. سلام رفیق
    با اکشن ۳ چه جوری میشه قسمتی از یک عکس که با دستور FileReference وارد فلش کردیم را برش داده یا جدا کرده و در جای دیگر استفاده کنیم؟

    • سلام
      بعد از وارد کردن عکس آن را به BitmapData تبدیل کنید سپس امکان انجام این کار و ایجاد افکتهایی دیگری نیز در اختیار شما خواهد بود
      برای اطلاعات بیشتر در وب یا مطالب همین وبلاگ جستجو نمایید

  8. سلام داش بهروز
    امیدوارم حالت خوب باشه یه سوال کوچیک داشتم اگر امکان داره جواب بدی ، دمت گرم.
    چطور میشه از فلش ۸ یا ۹ خروجی جیف بگیرم.

    • سلام
      خود فلش این امکان را دارد
      از منوی فایل گزینه Export می توانید این کار را انجام دهید ، البته حجم خروجی خیلی زیاد خواهد بود به همین دلیل بهتر هست از نرم افزار های کاربردی که برای این کار ساخته شده اند استفاده کنید مثل
      swf to gif
      اگر همین عبارت را در گوگل جستجو کنید نرم افزارهای مختلفی را خواهید یافت
      موفق و پیروز باشید

  9. خیلی ممنون واسه آموزش خوبتون
    یک سوال فنی داشتم .. چه طوری میشه با اکشن اسکریپت ۲ نقاشی که میکشی رو به صورت jpg ذخیره کنیم؟
    بازهم ممنون

  10. خیلی ممنون واسه آموزش خوبتون
    یک سوال فنی داشتم .. چه طوری میشه با اکشن اسکریپت ۲ نقاشی که میکشی رو به صورت jpg ذخیره کنیم؟
    اگر امکان داره پاسخ روبه ایمیلم هم ارسال کنید
    بازهم ممنون

  11. سلام پادشاه
    به نظرت می شه همین کار رو بجای لاین با fill انجام داد
    یعنی به جای خط کشیدن صفحه رو رنگ کنه و بشه بعدا بخشهایی از اون رو به دلخواه پاک کرد؟

    • سلام
      برای رنگ کردن می توانید کدی بنویسید که یک مربع به اندازه تمام صفحه طراحی کند و رنگ مورد نظرتان را به عنوان Fill وارد نمایید
      برای کد ها اگر با کمک گوگل موفق و نشدید ، بنده در خدمت هستم
      موفق و پیروز باشید

  12. با سلام
    چطوری میتونم با اکشن اسکریپت ۲ چندین عکس یا متن را به صورت رندوم نمایش بدم و میخوام به صورت فایل خارجی باشه یعنی عکسها یا متن ها در یه جای دیگه ذخیره شده باشه یا آپلود شده باشه. میشه لطف کنید اگه جواب دادید به ایمیلم ارسال کنید.

    • سلام
      مثلا عکس ها را به صورت عددی نام گزاری کنید ، مثلا ۱.jpg و….
      حال به این صورت به صورت رندوم به آدرس یکی از آنها برای بارگزاری برسید

      var randNum = 4;
      var getRand = Math.round((Math.random()*randNum)+1);
      var fileAddress=getRand + ".jpg";
      trace(fileAddress);
       
      loadMovieNum(fileAddress , 0);
      
      

      در ضمن برای دریافت جواب توسط ایمیل تیک زیر نظر را بزنید
      موفق و پیروز باشید

  13. سلام
    من یک movieclip به نام Bird درست کرده ام و می خواهم به او وزن بدهم تا از بالا بر زمین بیفتد. برای این کار یک کلاس بانام BIRD درست کرده ام و محتواش
    اینه:
    package raben;
    {
    import flash.display.*;
    import flash.events.*;

    public class bird extends MovieClip
    {
    var xSpeed:Number;
    var ySpeed:Number;
    var angle:Number;
    public var speed:Number;
    var graviti:Number = 5;

    public function Bird(enemy:MovieClip)
    {
    speed = 30;
    this.addEventListener(Event.ADDED, initialize);
    }

    function initialize(event:Event):void
    {
    angle = this.rotation / 180 * Math.PI;
    xSpeed = Math.cos(angle) * speed;
    ySpeed = Math.sin(angle) * speed;

    this.addEventListener(Event.ENTER_FRAME, moveBird);
    }

    function moveBird(event:Event):void
    {
    ySpeed += graviti;
    this.x += xSpeed;
    this.y += ySpeed;
    }
    }
    }
    در ضمن من این ها را در در پوشه های مخصوصی قرار داده ام
    و در لایه ی actions من این کد را نوشته ام:
    import raben.Bird;

    • باید این خصوصیت کلاس را به مووی کلیپیات نسبت دهید
      در بخش کتابخانه مووی کلیپ مورد نظر را انتخاب کرده در بخش خصوصیات به جای نام کلاس raben.Bird را وارد کنید
      حال به صورت دستی یا توسط اکشن مووی کلیپ را به استیج اضافه کنید
      موفق و پیروز باشید

  14. سلام وبسایتتون خیلی قشنگه!!!
    ی سوال داشتم چ شکلی میشه با فلش ارتباط برقرار کنیم با پورت comیا usbبرای جمع اوری دیتا ممنون

    • سلام
      به صورت مستقیم ارتباط کامل و جامعی برای این موضوع وجود ندارد
      البته با کمک گرفتن از برنامه هایی مثل MDM zinc و mProjector و… این کار امکان پذیر هست
      کدهای مربوطه به هر برنامه در بخش راهنمای آن وجود دارد
      موفق و پیروز باشید

  15. سلام
    من تازه می خوام فلش رو یاد بگیرم
    البته می خوام باهاش کارای انیمیشن کنم
    نه برای طراحی سایت
    نرم افزاری خوبی هست
    برای این کار ارزش وقت گذاشتن داره؟
    ممنون می شم راهنماییم کنید.

    • سلام
      بله فلش یک برنامه بسیار قوی برای این حیطه کاری و انیمیشن ۲ بعدی در جهان هست
      و آموزشهای بسیاری برای آن وجود دارد
      البته برنامه های مشابه زیادی مثل ToonBoom Studio و … هم هست که می توانید برسی کنید
      موفق و پیروز باشید

  16. سلام، امکان نوشتن این کدی که آموزش دادید در AS2 وجود نداره؟

    • سلام
      بله امکان پذیر هست

      _root.createEmptyMovieClip("line", _root.getNextHighestDepth());
      
      line.lineStyle(5, 0x000000, 100);
      var drawing = false;
      this.onMouseDown = function(){
      	drawing = true;
      }
      this.onMouseUp = function(){
      	drawing = false;
      }
      this.onEnterFrame= function(){
      	if(drawing == false){
      		this.line.moveTo(_xmouse,_ymouse)
      	}
      	if(drawing){
      		this.line.lineTo(_xmouse,_ymouse)
      	}
      }
      

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

  17. سلام با تشکر فراوان از شما ،
    ببخشید تو این قسمت نمیشه به جای اینکه یک مربع برای کشیدن خط قرار دهیم، اشکال دیگری قرار دهیم ؟؟! مثلا یک عکس jpg , png , bitmap یا هرچیز دیگه ای!

  18. با سلام من چند سوال داشتم
    ۱- یک دکمه خروج دارم روی یک فلش آموزشی میخوام با کلیک روی آن از فلش خارج شم چه دستوری باید وارد کنم؟
    ۲- میخوام دو گروه مطلب به هم وصل بشه (سوال وصل کردنی) چه کدی باید واردکنم
    ممنون

    • سلام
      برای مورد اول
      می توانید از این دستور استفاده کنید

          fscommand("quit");
      

      برای مورد دوم می بایست از Draw API در فلش استفاده کنید این عبارت را همراه به کلمه flash جستجو کنید نتایج به شما کمک خواهد کرد
      علاوه بر این مورد برای خط می بایست زمان رها شدن کلیک روی دکمه مربوطه هم کدی بنویسید که در متغییر دکمه ای که شروع خط کشیدن از آن شروع شده مقدار زمان رها شدن و دکمه ای که کلیک روی آن رها می شود در آن ذخیره شود تا بتوانید درست یا غلط بودن را چک کنید

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

  19. سلام بازم خسته نباشید و تشکر فراوان..
    من ی سوال دیگه برام پیش اومده.الان تو این فایلی که شما قرار دادید(کشیدن خط)
    دو مشکل وجود داره که دنبال جوابشم،
    ۱-وقتی برنامه رو اجرا میکنید نو حالت MouseDown حتما باید Mouse رو Drag کنیم که خط رو رسم کنه ، مشکل اینجاس که اگه من بخوام یه نقطه بزارم نمیشه،یعنی اگه تنها ۱ کلیک کنم نقطه رو رسم نمیکنه.
    ۲-وقتی در حالت اجرا ، شروع به کشیدن خط میکنیم اگر از صفحه خارج بشیم و خارج از صفحه رویداد MouseUp رخ بده ،زمانی که Mouse رو میاریم روی صفحه ی پروژه ، هنور حالت کشیدن خط رو داره و قطع نشده.
    لطفا کمکم کنید نیاز فوری دارم .با تشکر

    • سلام
      این پروژه آموزشی هست ، شما می توانید به رویداد کلیک در زمان رها شدن هم کد کشیده شدن یک خط یک پیکسلی را بدهید
      و یا برای خروج رویداد خروج را تعیین کرده و در صورت خروج طراحی را قطع کنید
      موفق و پیروز باشید

      • سلام.با تشکر فراوان: دست شما درد نکنه هردو رو برطرف کردم ،
        یه سوال دیگه داشتم: چه جوری میتونیم دوتا فایل Fla رو به هم link بدیم ؟! به فرض مثال میخوام در حالت اجرا از فایل A برم به فایل B
        مرسی

        • سلام
          فایل B را در فایل A لود کنید یا فایل C را بسازید که ابتدا فایل A را لود کند و بعد از کلیک مثلا روی دکمه ای فایل A را آنلود کرده و فایل B را لود کند
          موفق و پیروز باشید

  20. سلام
    خسته نباشید و بابت جواب های صریحتون ممنون سایت خوبی دارید موفق باشید
    یه سوال در مورد وصل کردن داشتم من میخوام دو تا آبجکت رو با یک خط به هم وصل کنم ولی هر چی گشتم نتنونستم راه حل درستی پیدا کنم کدی که نوشتم به صورت زیر هست که هر کدوم از آبجکتام به یه تارگت وصل میشن ممنون میشم راهنمایی کنید.

    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.display.Graphics;
    import flash.display.DisplayObject;
    
    var xPos:int;
    var yPos:int;
    var circles:Array = [a1,a2,a3,a4];
    
    for each (var circleMC:MovieClip in circles)
    {
    	circleMC.addEventListener(MouseEvent.MOUSE_DOWN, drag);
    	circleMC.addEventListener(MouseEvent.MOUSE_UP, drop);
    	circleMC.startX = circleMC.x;
    	circleMC.startY = circleMC.y;
    }
    var line:MovieClip = new MovieClip();
    
    function mousemove(e:Event)
    {
    	line.graphics.lineTo(mouseX,mouseY);
    }
    function getPosition(target:Object):void
    {
    	xPos = target.x;
    	yPos = target.y;
    }
    function drag(e:MouseEvent)
    {
    	addChild(line);
    	line.graphics.lineStyle(1, 0, 1);
    	line.graphics.moveTo(mouseX,mouseY);
    	getPosition(e.target);
    	e.target.startDrag(true);
    	this.addEventListener(MouseEvent.MOUSE_MOVE,mousemove);
    }
    function drop(e:MouseEvent)
    {
    	this.removeEventListener(MouseEvent.MOUSE_MOVE,mousemove);
    
    	if (e.target.hitTestObject(getChildByName(e.target.name + "Target")))
    	{
    		e.target.stopDrag();
    		e.target.x = getChildByName(e.target.name + "Target").x;
    		e.target.y = getChildByName(e.target.name + "Target").y;
    
    	}
    }
    
    • سلام

      لطف کنید فایل را جهت برسی از بخش ارتباط ارسال کنید یا ایمیل نمایید
      در ضمن لطف کنید دقیق تر مشکل را در مورد کاری که می خواهید انجام دهید مطرح کنید تا بنده بتوانم بهتر کمک نمایم

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

    • سلام
      مشکل اول این هست که می بایست از clear برای به جای نماندن خطوط استفاده کنید
      و این که هر خط می بایست در یک شی قرار داده شود تا وقتی clear انجام می شود همه خطوط حذف نشود

      کد اصلاح شده :

      import flash.events.Event;
      import flash.events.MouseEvent;
      import flash.display.Graphics;
      import flash.display.DisplayObject;
      import flash.display.MovieClip;
      
      var xPos:int;
      var yPos:int;
      var circles:Array = [a1,a2,a3,a4];
      for each (var circleMC:MovieClip in circles)
      {
      	circleMC.addEventListener(MouseEvent.MOUSE_DOWN, drag);
      	circleMC.addEventListener(MouseEvent.MOUSE_UP, drop);
      	xPos = circleMC.x;
      	yPos = circleMC.y;
      }
      
      var line:MovieClip = new MovieClip();
      
      var a1_line:MovieClip = new MovieClip();
      var a2_line:MovieClip = new MovieClip();
      var a3_line:MovieClip = new MovieClip();
      var a4_line:MovieClip = new MovieClip();
      
      function getPosition(target:Object):void
      {
      	xPos = target.x;
      	yPos = target.y;
      }
      function drag(e:MouseEvent)
      {	
      	trace(e.target.name);
      	switch(e.target.name) {
      		
      		case "a4":
      				line = a4_line;
      			break;
      
      		case "a3":
      				line = a3_line;
      			break;
      		
      		case "a2":
      				line = a2_line;
      			break;
      		
      		case "a1":
      				line = a1_line;
      			break;
      	}
      	
      	addChild(line);
      	
      	
      	line.graphics.lineStyle(1, 0, 1);
      
      	getPosition(e.target);
      	e.target.startDrag();
      
      	e.target.addEventListener(MouseEvent.MOUSE_MOVE,mousemove);
      }
      function mousemove(e:Event)
      {
      	line.graphics.clear();
      	line.graphics.moveTo(xPos,yPos);
      	line.graphics.lineStyle(4, 0, 1);
      	line.graphics.lineTo(e.target.x,e.target.y);
      	
      }
      function drop(e:MouseEvent)
      {
      	e.target.removeEventListener(MouseEvent.MOUSE_MOVE,mousemove);
      	e.target.stopDrag();
      	if (e.target.hitTestObject(getChildByName(e.target.name + "Target")))
      	{
      		trace("hit");
      
      		e.target.x = getChildByName(e.target.name + "Target").x;
      		e.target.y = getChildByName(e.target.name + "Target").y;
      
      	}
      	else
      	{
      		e.target.x = getChildByName(e.target.name + "_1").x;
      		e.target.y = getChildByName(e.target.name + "_1").y;
      	}
      }
      

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

  21. سلام ، ممنونم از پاسخ هایتان.
    من میخواستم خط راست بکشم ولی هر کدی به ذهنم آمد نوشتم ولی نشد.مثل کد زیر:

    import flash.display.MovieClip;
    import flash.events.MouseEvent;

    var line:MovieClip = new MovieClip ;
    var line2:MovieClip = new MovieClip ;
    var b:Number = 0;
    var b1:Number = 0;

    stage.addEventListener(MouseEvent.MOUSE_DOWN,sD);
    stage.addEventListener(MouseEvent.MOUSE_UP,eD);

    function sD(event:MouseEvent)
    {
    b = event.localX;
    b1 = event.localY;
    line.graphics.lineStyle(2,0×000000);
    line.graphics.moveTo(b,b1);
    addChild(line)
    stage.addEventListener(MouseEvent.MOUSE_MOVE,mD);
    }

    function mD(event:MouseEvent)
    {

    line.graphics.moveTo(b,b1);
    line.graphics.lineTo(event.localX,event.localY);

    }

    function eD(event:MouseEvent)
    {
    line.graphics.clear();
    removeChild(line);
    addChild(line2);
    line2.graphics.lineStyle(2,0×000000);
    line2.graphics.moveTo(b,b1);
    line2.graphics.lineTo(mouseX,mouseY);
    }

  22. سلام
    ببخشید یه سوال دیگه که آخریشه فکر کنم!
    ممنونم که تاحالا جواب میدادید …
    چکار کنم مختصات را تو اکشن اسکرپت به سانتی متر وارد کنم….
    کدی وجود دارد، آیا؟
    خیلی باید دقیق باشد.
    چون یک پروژه به سانتی متر ساختم و خواستم هر نیم سانتی متر یک شکل بیاید ، با محاسبه تعداد حلقه ها شصت تا شد ولی با تبدیل سانتی متر به پیکسل(۱cm=28.5pixle)حلقه ام به هم ریخت حدود ده تکرار کم امد و یه طوری شد.

    • سلام

      برای این محاسبه یک نکته وجود دارد و آن DPI هست که باید در نظر گرفته شود
      در اکشن اسکریپت برای دریافت DPI نمایشگر از کد Capabilities.screenDPI استفاده می شود

      برای تبدیل پیکسل به سانتی متر این کد به کار می رود

      var pixels = 100;
      var centimeters = pixels * 2.54 / Capabilities.screenDPI 
      

      و برای میلی متر به پیکسل نیز این کد

      var mm= 100;
      var pixels = Math.round(Capabilities.screenDPI * (mm / 25.4));
      

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

ارسال جواب

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

*

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