خانه » ادوبی فلش » ۱۶ فرمول کاربردی ریاضی در اکشن اسکریپت ۳

۱۶ فرمول کاربردی ریاضی در اکشن اسکریپت ۳

۱۶ فرمول کاربردی ریاضی در اکشن اسکریپت ۳

۱. فاصله ی بین دو نقطه

 dx = x2 – x1;
 dy = y2 – y1;
 dist = Math.sqrt(dx*dx + dy*dy);

2. فرمول اینج

 sprite.x += (targetX – sprite.x) * easing;
//easing: ضریب اینچ
 sprite.y += (targetY – sprite.y) * easing;

3. فرمول الاستیک

 vx += (targetX – sprite.x) * spring;
//spring: ضریب الاستیک
 vy += (targetY – sprite.y) * spring;
 sprite.x += (vx *= friction);
//friction: نیروی اصطکاک
 sprite.y += (vy *= friction);

مثال با کد کامل :

addEventListener(Event.ENTER_FRAME , onEnterFrame , false , 0 , true);

var vx:Number=0;
var vy:Number=0;

var targetX=500;
var targetY=400;

var spring=5;
var friction=0.01;

function onEnterFrame(event:Event):void {

	vx += (targetX-ball.x) * spring;
	vy += (targetY-ball.y) * spring;

	vx *=friction;
	vy *=friction;

	ball.x +=vx;
	ball.y +=vy;
}

4.فرمول دگرگونی انعطاف پذیر


var dx:Number = sprite.x – fixedX;
 var dy:Number = sprite.y – fixedY;
 var angle:Number = Math.atan2(dy, dx);
 var targetX:Number = fixedX + Math.cos(angle) * springLength;
 var targetY:Number = fixedX + Math.sin(angle) * springLength;

5. چرخش با موس

 dx = mouseX – sprite.x;
 dy = mouseY – sprite.y;
 sprite.rotation = Math.atan2(dy, dx) * 180 / Math.PI;

مثال با کد کامل :

addEventListener(Event.ENTER_FRAME , onEnterFrame , false , 0 , true);

var dx;
var dy;

function onEnterFrame(event:Event):void {
	dx= stage.mouseX - ball.x;
	dy= stage.mouseY - ball.y;
	ball.rotation = Math.atan2(dy,dx) * 180 / Math.PI;
}

6. فرمول موج

 public function onEnterFrame(event:Event):void {
 ball.y=centerScale+Math.sin(angle)*range;
 angle+=speed;
 }

مثال با کد کامل :

addEventListener(Event.ENTER_FRAME , onEnterFrame , false , 0 , true);

var angle =10;
var speed =11;
var centerScale=stage.stageHeight/2;
var range=5;

function onEnterFrame(event:Event):void {

	ball.y=centerScale+Math.sin(angle)*range;
	angle+=speed;

	ball.x += 2;
}

7. فرمول تپش قلب

 public function onEnterFrame(event:Event):void {
 ball.scaleX=centerScale+Math.sin(angle)*range;
 ball.scaleY=centerScale+Math.sin(angle)*range;
 angle+=speed;
 }

مثال با کد کامل :

addEventListener(Event.ENTER_FRAME , onEnterFrame , false , 0 , true);

var angle =1;
var speed =1;
var centerScale=2;
var range=1;

function onEnterFrame(event:Event):void {
	ball.scaleX=centerScale+Math.sin(angle)*range;
	ball.scaleY=centerScale+Math.sin(angle)*range;
	angle+=speed;
}

8. فرمول چرخش دایره ای


public function onEnterFrame(event:Event):void {
 ball.x=centerX+Math.cos(angle)*radius;
 ball.y=centerY+Math.sin(angle)*radius;
 angle+=speed;
 }

9. مساحت دایره

 public function getArea():Number
 {
 return Math.PI * Math.pow((width / 2), 2);
 }

10. نسبت دور (محیط)

 public function getCircumference():Number
 {
 return Math.PI * width;
 }

11. فرمول چرخش بیضوی

 public function onEnterFrame(event:Event):void {
 ball.x=centerX+Math.cos(angle)*radiusX;
 ball.y=centerY+Math.sin(angle)*radiusY;
 angle+=speed;
 }

مثال با کد کامل :

addEventListener(Event.ENTER_FRAME , onEnterFrame , false , 0 , true);

var angle =2;
var speed =1;
var centerX=stage.stageWidth/2;
var centerY=stage.stageHeight/2;
var radiusX=150;
var radiusY=50;

function onEnterFrame(event:Event):void {
	ball.x=centerX+Math.cos(angle)*radiusX;
	ball.y=centerY+Math.sin(angle)*radiusY;
	angle+=speed;
}

12. عملیات رنگ

 var t:uint=0×۷۷ff8877
 var s:uint=0xff000000
 var h:uint=t&s
 var m:uint=h>>>24
 trace(m);

13.تبدیل هگزادسیمال (Hex) به دسیمال (Decimal)


var hexValue:uint = 0xFFFFFF;

trace(hexValue); // 16777215

14. تبدیل دسیمال (Decimal) به هگزادسیمال (Hex)

 decimalValue.toString(16);

15. گرفتن رنگ

 red = color24 >> 16;
 green = color24 >> 8 & 0xFF;
 blue = color24 & 0xFF;

 alpha = color32 >> 24 & 0xFF;;
 red = color32 >> 16 & 0xFF;
 green = color32 >> 8 & 0xFF;
 blue = color232 & 0xFF;

مثال با کد کامل :

var color24 = 0xff0000;
trace("color24:",color24)
//color24:16711680

var red24 = color24 >> 16;
var green24 = color24 >> 8 & 0xFF;
var blue24 = color24 & 0xFF;

trace(" red:"+red24 , " green:"+green24 , " blue:"+blue24)
//red:255 | green:0 | blue:0

var color32 = 0xff00ff99;
trace("color32: ",color32)
//color32:4278255513

var alpha32 = color32 >> 24 & 0xFF;

var red32 = color32 >> 16 & 0xFF;
var green32 = color32 >> 8 & 0xFF;
var blue32 = color32 & 0xFF;

trace("red:"+red32 , "green:"+green32 , "blue:"+blue32, "alpha:"+alpha32);
//red:0 | green:255 | blue:153 | alpha:255

16. محاسبه بیت (bit) رنگی

 color24 = red << 16 | green << 8 | blue;

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

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

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

36 نظر

  1. سلام
    خیلی عالی بود مخصوصا برای ساختن بازی

    امیدوارم همیشه موفق باشید

  2. سلام بهروز جان عالی بود!
    برای برخی از محاسبات از توابع خود as3میشه راحتر استفاده کرد.
    مثلا فاصله بین ۲نقطه.
    که اگه تو فضا بخوایم محاسبه کنیم کمی سختر میشه ولی با استفاده از کلاس Vector3dمیهش راحتر محاسبه کرد :

    var loc:Vector3D = new Vector3D(); 
    var loc2:Vector3D = new Vector3D(100,50); 
    
    var dist2=(loc2.subtract( loc )).length; 
    trace(dist2)
    
  3. سلام
    کاش برای هر کدوم یه توضیح کوچک هم میگذاشتین
    ممنون

  4. با سلام قسمت گرفتن رنگ یعنی چه؟ یعنی توی پردازش تصویر میشه ازش استفاده کرد

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

      در ضمن بنده یه مثال کاربردی به مطلب در این باره اضافه کردم تا توضیحاتم بیشتر قابل درک باشد ، در این مثال بنده رنگها را به حالت هگزادسیمال قرار دادم و از این مقدار موارد دیگر را استخراج کردم هم برای ۲۴ بیتی و هم برای ۳۲ بیتی…

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

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

    راستش غرض از گذاشتن کامنت اینکه یه سوالی در مورد این ۱۶ فرمول ریاضی در اکشن اسکریپت داشتم که خواستم بدین وسیله از خدمتتون بپرسم
    سوال بنده اینه که چجوری میتونم به یک شی با نام اینستانس ball چن حرکت از این فرمولهای ریاضی رو بدم مثلا شی مورد نظر با فرمول موج وارد بشه وقتی به وسط صفحه رسید مثلا دوبار فرمول تپش قلب اجرا بشه و بعد از دو بار اجرا شدن فرمول تپش قلب ، سپس شی از طرف چپ با فرمول موج خارج بشه

    حال استدعا میکنم که بنده رو راهنمائی کنین که چکار باید بکنم و کدهایش به چه نحوی است

    قبلا از راهنمائی و لطفتون نهایت تشکر و قدردانی را دارم

    ارادتمند رضا

    • سلام
      می بایست از متدTimer یا کلاس های Tween و… در اکشن اسکریپت استفاده کنید و تا زمانی که می خواهید از یک مورد فرمول ها و در صورتی که از زمان مورد نظر شما گذشت از نوع دیگر آن با مقدار دهی های جدید و فرامین جدید استفاده کنید
      موفق و پیروز باشید

  6. با سلام خدمت استاد محترم آقای پولادرگ عزیز
    رضا هستم که کامنت میگذارم

    خواستم بدین وسیله از لطفی که کردین و راهنمائیم کردین ازتون تشکر کنم شما با این کارتون بنده رو شرمنده کردین از بابت راهنمائیتون خیلی ازتون متشکرم

    در ضمن میخواستم اگه براتون امکان داشته باشه خواهشا ، با مثالی میشه این کار رو برام توضیح بدین که کدهائی که باید بنویسم چجوری باید باشه ؟؟!! و نمونه کدهایش چگونه است ؟؟؟!!

    اگه بنده رو باز هم با الطافتون شرمنده کنین بینهایت متشکر میشم ، چون این مورد تایمر از اول هم برای بنده سوال بوده که چه جوری باید تایمر رو برای چن حرکت تنظیم کنم و نیز با دستور if چگونه باید اتمام و شروع حرکت را شرطی و تنظیم کنم

    قبلا از لطفی که میکنین نهایت تشکر و امتنان را دارم

    ارادتمند رضا

    • سلام
      مطالبی در مورد تایمر در مقالات هست
      البته برای راحت تر بودن اگر با Tweener کار کردید می توانید از امکان تایمر آن استفاده کنید
      و در بخش پارامترهایی که باید کم و زیاد می شدند چیزی ننویسید و فقط از رویداد onComplete و امکان وارد کردن زمان آن استفاده کنید
      چون می دانم با Tweener ها کار کردید این پیشنهاد را برای شما دارم ، کار برایتان مفهوم تر هست
      در مورد تایمر ، یک تایمر که ثانیه شمارش در حال افزایش هست را در نظر بگرید و یک یا چند شرط که هر کدام مربوطه به زمانی از اجرا هستند
      موفق و پیروز باشید

  7. با سلام خدمت استاد محترم آقای پولادرگ عزیز
    رضا هستم که کامنت میگذارم
    خواستم بدین وسیله از لطفی که کردین و بنده رو راهنمائی کردین ازتون تشکر کنم واقعا بزرگوارین نمیدونم چجوری از این همه لطف و بزرگواری ازتون تشکر کنم استاد عزیز بنده از این که جز تشکر خشک وخالی کاری از دستم بر نمیاد شرمنده ام خیلی شرمنده ام اما با امید به بزرگواری که از شما سراغ دارم امیدوارم این همه کمبود و کاستی را به بزرگواری خودتون ببخشین که اگر ببخشین مطمئنا باز هم بزرگواری کردین و بنده رو شرمنده این نهایت بزرگواریتون کردین
    ضمنا تولد بانوی دو عالم دخت عزیز پیامبر اکرم و مادر امامت رو تبریک عرض میکنم

    ضمنا با اجازتون بنده دیروز یه سری به مطالب مفید سایتتون در مورد تایمر زدم و خواستم که مطابق راهنمائیها انجام بدم ولی متاسفانه نتونستم اونجور که باید انیمیشن مفیدی بسازم و نتیجه اونی که میخواستم نشد حتی یه شرط براش گذاشتم که باز هم مثل مورد قبلی نتیجه امیدوار کننده نبود آخه بنده از اول هم در تایمر گذاشتن به انیمیشن مشکل داشتم و بیشتر از اون هم در مورد شرط گذاشتن برای کدها خلاصه اونطور که میخواستم نتونستم انیمیشنی مفید بسازم

    حال میخواستم از شما درخواست کنم که در صورت امکان ، آیا امکان داره که چگونگی ترکیب دو یا سه حرکت از نمونه فرمولهای ریاضی رو برام توضیح بدین ؟؟؟

    از این بابت که نتونستم شرمنده، ولی آیا امکان دارد با نمونه کد که چجوری باید باشه بنده رو راهنمائی کنین ؟؟؟

    اگه امکانش باشه و بنده رو راهنمائی بفرمایین ازتون بینهایت متشکر میشم
    منتظر راهنمائیتون هستم
    ارادتمند رضا

  8. سلام
    میخوام عدد تصادفی اعشاری تولید کنم . یک رقم صحیح و یک رقم اعشار
    مثلا: ۱.۲ – ۵.۳ – ۹.۴ -و…
    برنامه از این قراره:
    ۲تا عدد مثل بالا نشون داده میشه؛ کاربر جواب رو وارد میکنه؛ اگه جواب درست بود امتیاز میگیره و میره سوال بعد
    باید برای قسمت صحیح و قسمت اعشار جداگونه عدد رندم int تولید کنم؟

  9. سلام
    خسته نباشید
    من میخوام با فلش CS4 یه بازی خیلی ساده بسازم میشه راهنماییم کنید

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

  10. بنام خدا

    دوست خوب،پادشاه ی است که بر دل حکومت میکند!
    سلام پادشاه

    سلام خدمت استاد محترم آقای پولادرگ عزیز

    رضا هستم که کامنت میذارم

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

    ارادتمند رضا

  11. سلام
    من میخوام توی فلش دو تا عدد رو از کاربر بگیرم و بعد از انجام کمی محاسبات ریاضی نتیجه رو بهش نشون بدم.
    امکان داره من رو راه نمایی کنید که چظور باید این کار رو انجام بدم.

    ممنون

    • سلام
      برای دریافت داده ها باید فیلد متنی input ایجاد کنید و برای آنها instance Name قرار دهید مثلا txt1 و بعد مقدار را به این صورت دریافت کنید
      txt1.text مقدار فیلد متنی ورودی را دریافت می کند

      var test = txt1.text;
      

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

  12. سلام میخواستم ازتون خواهش کنم من رو راهنمایی کنید و برام با کدتوضیح بدید اگه بخوام وقتی یه شی رو در یه خونه قرار بدم معلوم کنم که پر هست و دیگه شی ای در اون خونه نشه بذاری و فقط بشه ازش برداری مثلا یه جورایی شبیه شطرنج که هر خونه فقط یه مهره در اون میتونه قرار بگیره و بعد که مهره رو برداشتیم مهره دیگه میتونه اونجا گذاشته بشه.چطور بگم که خونه پر هست؟با اکشن اسکریپت ۳کار میکنم.

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

      یک مثال را مشاهده کنید

      package
      {
        import flash.display.MovieClip;
        import flash.display.Sprite;
        import flash.events.MouseEvent;
        import flash.events.Event;
        import flash.display.Graphics;
       
        public class Example1 extends MovieClip
        {
          var boundaries1:Sprite = new Sprite();
          var boundaries2:Sprite = new Sprite();
       
          public function Example1()
          {
            //draw 2 boxes to graphically present object's rectangular boundaries
            boundaries1.graphics.beginFill(0x000000);
            boundaries1.graphics.drawRect(0, 0, circle_mc.width, circle_mc.height);
            boundaries1.graphics.endFill();
            boundaries1.alpha = .4;
       
            boundaries2.graphics.beginFill(0x000000);
            boundaries2.graphics.drawRect(0, 0, polygon_mc.width, polygon_mc.height);
            boundaries2.graphics.endFill();
            boundaries2.alpha = .4;
       
            addChild(boundaries1); addChild(boundaries2);
       
            //on every played frame check if there is any collision detected
            addEventListener(Event.ENTER_FRAME, checkIfHitTest);
          }
       
          public function checkIfHitTest(e:Event):void
          {
            circle_mc.x = mouseX - circle_mc.width / 2;
            circle_mc.y = mouseY - circle_mc.height / 2;
            if(circle_mc.hitTestObject(polygon_mc))
            {
              myText.text ="Yes";
              showBoundaries(true);
            }
            else
            {
              myText.text ="No";
              showBoundaries(false);
            }
          }
       
          //function to show/hide boundary boxes if collision was detected
          public function showBoundaries(isShow:Boolean):void
          {
            if(isShow)
            {
              boundaries1.visible = true;
              boundaries2.visible = true;
              boundaries1.x = circle_mc.x;
              boundaries1.y = circle_mc.y;
       
              boundaries2.x = polygon_mc.x;
              boundaries2.y = polygon_mc.y;
            }
            else
            {
              boundaries1.visible = false;
              boundaries2.visible = false;
            }
          }
        }
      }
      

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

  13. آقای پولادرگ عزیز خیلی ممنون که این همه مارو در زمینه فلش و اکشن اسکریپت راهنمایی می کنید انشاالله که همیشه سلامت وپر انرژی باشید.مررررررررررررسی

  14. میشه لطف کنید من وراهنمایی کنید که کد اکشن برای آیکن های back ,forward برای رفتن به صفحات بعدی وقبلی فلش چی هست .با تشکر فاطمه

    • سلام
      برای رفتن به فریم های بعدی و قبلی می بایست از کد های پیمایش فریم استفاده کنید
      اگر شماره فریم مربوطه را می دانید که کد gotoAndStop و یا gotoAndPlay به کار شما می آید در غیر این صورت کدهای nextFrame و prevFrame برای فریم بعدی و قبلی استفاده می شود ، به صورت فرضی هر فریم یک صفحه در نظر گرفته شده است و با توجه به این موضوع حرکت بین فریم ها می تواند حرکت بین صفحه ها باشد ، اگر صفحه های شما داخل یک شی دیگر هست نام شی باید اول کد ها استفاده شود ، دو کد اول هم به عنوان آرگمان اول خودشان عدد فریم را می گیرند
      موفق و پیروز باشید

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

    من در قسمتی از یک برنامه در AS2 – چهل عدد دکمه دارم که هر کدوم یک کد رنگ رو توی یک متغیر میریزه و در مجموع یک ColorPicker هست.

    الان دارم اون رو به AS3 تبدیل میکنم. در AS2 من روی هر دکمه کد مربوطه رو نوشته بودم. میخواستم ببینم حالا باید برای هر دکمه یک لیستنر بزارم و یک فانکشن تعریف کتم یا راهی هست که بشه با یک تکه کد خلاصه کنمش ؟

    • سلام می توانید همه را در یک شی قرار دهید و به آن رویدادی نسبت دهید که همه را شامل شود و در تابع بازگشتی نام موردی که روی آن کلیک شده را دریافت و نسبت به نام آن مقدار خود را برگردانید
      یا مقدار را هم در نام قرار دهید مثل Color_4455FF حال بعد از دریافت نام تنها کاراکتر های Color_ را حذف کرده و داده خود را به عنوان انتخاب کاربر استفاده کنید
      برای رویدادهای زیاد می توانید از حلقه for هم استفاده کنید و همه اشیاء را ابتدا درون یک آرایه قرار دهید و رویداد را اعمال کنید البته روش اول بهتر است
      مقالات مربوطه به رویدادها در فلش را مطلاله فرمایید
      موفق و پیروز باشید

  16. سلام آقای پولادرگ
    خیلی مطالب مفیدی بود
    ولی میشه برای من فرمول gravity یا همون جاذبه رو با یه مثال توضیح بدید که وقتی یه توپ از بالا بیفته جاذبه اون رو بکشه و وقتی به زمین میخوره عین طبیعی خودش چن بار بره بالا و پایین تا وایسه
    خیلی ممنون اگه این مطلب رو هم برام توضیح بدید خیلی ممنون میشم

    • سلام

      اگر نمایش کامل فرایند را می خواهید می توانید از موتورهای تحلیل فیزیک مثل box2D استفاده کنید با استفاده از آنها می توانید فرایند های فیزیک را شبیه سازی کنید
      در مورد یک توپ که شما می فرمایید فقط جاذبه نیست، نیرویی که به توپ وارد می شود و استحکاک سطوح و زاویه پرتاب و… می بایست محاسبه شود
      البته این موارد همگی در موتورهای تحلیل فیزیک در نظر گرفته شده است
      خوشبختانه box2d برای اکثر زبانهای برنامه نویسی آماده شده است و برای اکشن اسکریپت نیز در دسترس می باشد

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

  17. سلام آقای پولادرگ
    خواهشا خواهشا خواهش می کنم خواهش می کنم
    یه آموزش کامل بزارید برای اینکه چطور از موتور فیزیک Nape یا Box2D استفاده کنیم یا اونارو تو پروژه هامون استفاده کنیم
    یا اگر مطلبی هم دارید در این باره به ایمیل من بفرستید

    • سلام
      اگر همین عبارت ها را به همراه actionscript3 ارسال کنید مطالب زیادی هست مثلا Box2D actionscript3
      بنده نیز سعی می کنم در آینده نزدیک به مطالبی در این زمینه بپردازم، البته گستردگی زیادی دارد
      موفق و پیروز باشید

ارسال جواب

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

*

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