آموزش adobe air (کلاس NativeWindow )

mohammad.sub7

کاربر فعال
سلام

تو این قسمت میخوام 1 نگاهی به کلاس nativewindow برای adobe air for flash قرار بدم. و چند مورد مثال بزنم.
------------
امیدوارم دوستای حرفه ای air مثل آقای بهروز پولادرگ و yaa110 عزیز و ... هر ایراد یا نکته ای دیدن بگن.

------------------------------------------------------------------------------------------------------------------------
يكي از اصلي ترين و مهمترين كلاسهاي adobe air مخصوصاً براي app هاي
دسكتاپ كلاس NativeWindow هستش! همونطور كه ميدونيد air نسبت به
حروف بزرگ و كوچيك حساس هست .
اين كلاس air for tv و mobile رو ساپورت نميكنه! اما براي دسكتاپ همه
سيستم عاملهايي كه ساپورت ميكنه(ويندوز – لينوكس - مكينتاش) فعال هست.
ما ميتونيم از بسته flash.display اين كلاس رو import كنيم.
ابتدا به صورت كلي پروپرتي ها و متد هاي اين كلاس رو قرار ميدم بعضي
هاشم با ترجمه. بعد به بررسي جزئيات بر خي از اونها مي پردازيم .
 
آخرین ویرایش:

mohammad.sub7

کاربر فعال
پروپرتي هاي اين كلاس به صورت زير است :
active : Boolean
[read-only] Indicates whether this window is the active application window.
نشون ميده که آیا این پنجره، پنجره فعال برنامه ما هست يا نه
alwaysInFront : Boolean
Specifies whether this window will always be in front of other windows (including those of other applications).
تعيين ميكنه که آیا این پنجره همیشه در جلوی پنجره های ديگه (مثل پنجره برنامه هاي ديگه كه باز هستن) هست يا نه.
bounds : Rectangle
The size and location of this window.
اندازه و مكان قرارگيري برنامه رو تعيين ميكنه
closed : Boolean
[read-only] Indicates whether this window has been closed.
نشون ميده آيا پنجره ما بسته شده يا نه
constructor : Object
A reference to the class object or constructor function for a given object instance.
اشاره به كلاس اشياء يا تابع سازنده براي بدست آوردن اينستنس اشيا
displayState : String
[read-only] The display state of this window.
حالت نمايش پنجره برنامه
height : Number
The height of this window in pixels.
isSupported : Boolean
[static] [read-only] Indicates whether native windows are supported on the client system.
تو مقايسه هاي شرطي داخل عبارت شرط از اين پروپرتي استفاده ميشه كرد
maximizable : Boolean
[read-only] Reports the maximizable setting used to create this window.
تو مقايسه هاي شرطي داخل عبارت شرط از اين پروپرتي استفاده ميشه كرد
maxSize : Point
The maximum size for this window.
حداكثر اندازه براي پنجره برنامه ما رو مشخص ميكنه
menu : NativeMenu
The native menu for this window.
توضيحاتش تو قسمت مربوط به خودش رو بعداً ميدم
minimizable : Boolean
[read-only] Reports the minimizable setting used to create this window.
تو مقايسه هاي شرطي داخل عبارت شرط از اين پروپرتي استفاده ميشه كرد
minSize : Point
The minimum size for this window.
حداقل اندازه براي پنجره برنامه ما رو مشخص ميكنه
owner : NativeWindow
[read-only] The NativeWindow object that owns this window.
براي سفارشي كردن و شخصي سازي استفاده ميشه
prototype : Object
[static] A reference to the prototype object of a class or function object.
resizable : Boolean
[read-only] Reports the resizable setting used to create this window.
تو مقايسه هاي شرطي داخل عبارت شرط از اين پروپرتي استفاده ميشه كرد
stage : Stage
[read-only] The Stage object for this window.
مديريت stage
supportsTransparency : Boolean
[static] [read-only] Indicates whether AIR supports native windows with transparent pixels.
خاصيت ترنسپرنت بودن رو بررسي ميكنه
systemMaxSize : Point
[static] [read-only] The largest window size allowed by the operating system.
حداكثر مقدار كه به كاربر اجازه بده پنجره بزرگ بشه تعيين
systemMinSize : Point
[static] [read-only] The smallest window size allowed by the operating system.
حد اقل مقدار كه به كاربر اجازه بده پنجره كوچيك بشه تعيين
title : String
The window title.
مربوط به عنوان پنجره
transparent : Boolean
[read-only] Reports the transparency setting used to create this window.
type : String
[read-only] Reports the window type setting used to create this window.
تعيين نوع پنجره
visible : Boolean
Specifies whether this window is visible.
وي‍‍‍ژگي مرئي يا نامرئي بودن در برنامه رو تعيين ميكنه
width : Number
The width of this window in pixels.
پهناي پنجره بر مبناي پيكسل
x : Number
The horizontal axis coordinate of this window's top left corner relative to the origin of the operating system desktop.
تعيين مكان پنجره(نقطه 0و0 گوشه چپ بالا مي باشد)
y : Number
The vertical axis coordinate of this window's top left corner relative to the upper left corner of the operating system's desktop.


 
آخرین ویرایش:

mohammad.sub7

کاربر فعال
alwaysInFrontويژگي

· خاصيت always on top بودن :
فرض كنيم كه نياز داريم خاصيتي واسه app داشته باشيم كه مثلاً با زدن دكمه اي پنجره برنامه ما هميشه از همه پنجره ها جلوتر قرار بگيره . مثلاً اگه فولدر يا برنامه اي باز كرديم پنجره ما زير اون فولدر يا برنامه قرار نگيره !
خوب از كلاس NativeWindow پروپرتي alwaysInFront رو كافيه انتخاب كنيم. چون اين پروپرتي از نوع Boolean هست بنابراين مقدار ما بايد true يا false باشد. در اين صورت كد ما به صورت زير خواهد بود:

PHP:
import  flash.display.NativeWindow
stage.nativeWindow.alwaysInFront=true;
 
آخرین ویرایش:

mohammad.sub7

کاربر فعال
: boundsويژگي




به كمك اين ويژگي ميتونيم تعيين كنيم پروژه ما هنگام اجرا كجاي صفحه ما نمايش داده بشه!


ضمناً ميتونيم تعيين كنيم سايز برنامه ما چقدر باشه. به مثال زير دقت كنيد:


PHP:
stage.nativeWindow.bounds = new Rectangle(444, 377, 333, 333);
 

mohammad.sub7

کاربر فعال
داخل پرانتز مقادير اول و دوم مكاني از صفحه مانيتور به صورت پيكسل هست كه برنامه ما بايد اونجا قرار بگيره.
نقطه 0 و 0 رو به مقادير اول و دوم پرانتز بديم برنامه ما در گوشه بالا سمت چپ مانيتور در صورتيكه
قرار ميگيره. در صورتي هم كه ميخوايم سايز برنامه تغيير نكنه مقدار سوم و چهارم رو برابر با سايز صفحه برنامه قرار ميديم.
نكته 1: از اونجايي كه ريزولوشن هاي مانيتور ها روي سيستم هاي مختلف احتمال داره فرق داشته باشه پس مكان دلخواهي كه روي ريزولوشن مورد نظر خودمون قرار داديم امكان داره جابجا شه تو سيستم هاي ديگه؛ به جز نقطه 0 و 0 .
نكته 2 : مقاديري كه داخل پرانتز ميديم نبايد بيشتر از 2880 پيكسل باشن (تا اين نسخه اير)
ما ميتونستيم اين دستور رو به دكمه بديم يعني با كليك روي دكمه مورد نظر برنامه به مكان دلخواه بره :

PHP:
mybtn.addEventListener(MouseEvent.CLICK , mybounds);
 
function  mybounds (event:MouseEvent):void
{
        stage.nativeWindow.bounds = new Rectangle(200, 200, 333, 222);
}
 

mohammad.sub7

کاربر فعال
:close ()متد

خروج:
air چهار روش براي خروج از برنامه داره! البته تفاوت هایي بين اونها هست که از بحث خارجه!
اينجا ميخوايم با كلاس NativeWindow اين كار رو انجام بديم . كافيه close() رو صدا بزنيم:
PHP:
stage.nativeWindow.close();
--------------------------
 
آخرین ویرایش:

mohammad.sub7

کاربر فعال
: height & widthويژگي


تغيير سايز stage به اندازه دلخواه :
فرض كنيم دكمه اي داريم كه ميخوايم با كليك روي دكمه صفحه stage ما
به اندازه اي كه نياز داريم بشه. از كلاس NativeWindow ، height يا width
رو انتخاب ميكنيم و مقدار دلخواه رو قرار ميديم.

PHP:
import flash.display.NativeWindow;
import flash.events.MouseEvent;
mybtn.addEventListener(MouseEvent.CLICK , changesize);
function changesize (event:MouseEvent):void
{
stage.nativeWindow.height=800 ;
stage.nativeWindow.width = 600 ;
}
توجه داشته باشيد درصورتيكه خروجي برنامه ما به صورت ترنسپرنت باشد رويداد دلخواه ما رخ نميدهد!
 

mohammad.sub7

کاربر فعال
:Minimize() & Miximize() & restore() متد
مينيمايز كردن برنامه :
PHP:
[/RIGHT]
    stage.nativeWindow.minimize();  [/LEFT]
[RIGHT][LEFT]

ماكسيمايز كردن :
توجه داشته باشيد اين خاصيت با خاصيت تمام صفحه بودن تفاوت داره
PHP:
[/RIGHT]
    stage.nativeWindow.maximize();[/LEFT]
[RIGHT][LEFT]

: restore()
خوب حالا فرض ميكنيم پنجره رو ماكسيمايز يا مينيمايز كرديم ميخوايم به حالت قبلي برگردونيم. كد زير اين كار رو انجام ميده
PHP:
stage.nativeWindow.restore();
 
  • Like
Reactions: FLV

mohammad.sub7

کاربر فعال
مثال :اينم 1 تابع دو كاره كه اگه به دكمه مورد نظرمون نسبت بديم باعث ميشه با كليك كردن اگه پنجره نرمال بود ماكسيمايز بشه و اگه ماكسيمايز بود سايز برنامه به حالت قبلي برگرده:

PHP:
function maximizeWindow(e:Event):void
{
          if(stage.nativeWindow.displayState != NativeWindowDisplayState.MAXIMIZED)
          {
                   stage.nativeWindow.maximize();
          } 
          else 
          {
                   stage.nativeWindow.restore();
          }
}
داخل قسمت دوم شرط از كدهاي زير نيز ميتونستيم استفاده كنيم:\
PHP:
[/RIGHT]
NativeWindowDisplayState.NORMAL
NativeWindowDisplayState.MINIMIZED[/LEFT]
[RIGHT][LEFT]
 
  • Like
Reactions: FLV

mohammad.sub7

کاربر فعال
:startMove()متد
براي دراگ كردن برنامه از كد زير استفاده مي كنيم. نكته اي كه وجود داره اين هست كه بعد از رها كردن
ماوس خود به خود عمل دراگ به پايان ميرسه و نياز به كد پايان دادن به عمل دراگ نيست چون در اصل
اين كد به ظاهر عمل دراگ رو انجام ميده و در اصل خاصيت حركت دادن برنامه هست!!!
PHP:
[/RIGHT]
    stage.nativeWindow.startMove();[/LEFT]
[RIGHT][LEFT]
 
  • Like
Reactions: FLV

mohammad.sub7

کاربر فعال
:startResize ()متد
با استفاده از كد زير مي تونيم برنامه رو به صورت لحظه اي به هر سايز كه لازم داشتيم تبديل كنيم
اين كد كاملاً با كدي كه ميتونستيم صفحه برنامه رو تغيير بديم متفاوت هستش! مثلاً اگه به قسمت گوشه دقت كنيم ميتونيم با پايين نگه داشتن ماوس سايز برنامه رو به صورت لحظه اي تغيير notepadبرنامه
بديم! اين كد دقيقاً ميتونه همين كار رو انجام بده، بيشتر براي بالا رفتن قدرت يا زيبايي برنامه از اين خاصيت استفاده ميكنيم
PHP:
[/RIGHT]
stage.nativeWindow.startResize();[/LEFT]
[RIGHT][LEFT]

اینم 1 مثال:​
 
  • Like
Reactions: FLV

mohammad.sub7

کاربر فعال
: order ToFront , order ToBackمتد ()
خوب فرض كنيم ميخوايم برعكس اينكه پنجره برنامه ما روي برنامه هاي ديگه باشه زير اونهابره
رو دقت كرده باشيد 1 تيك وجود داره كه هميشه روي پنجره هاي ديگه باشه Jet audio اگه مثلاً برنامه
با غير فعال كردن پنجره پشت صفحه اي كه جديد باز كنيم ميره يعني تو اينجا:
PHP:
[/RIGHT][/RIGHT]
[LEFT]stage.nativeWindow.alwaysInFront=false;[/LEFT]
[RIGHT][LEFT]
[/LEFT]
حالا دقيقاً ما هم گفتيم ديگه اونجور نباشه كه روي برنامه هاي ديگه باشه اما چون هنوز برنامه جديد باز نشده همچنان روي برنامه ها قبلي هست. با متد زير برنامه به پشت برنامه هاي باز ديگه ميره:

PHP:
stage.nativeWindow.orderToBack();
مثال: اينجا ابتدا تعريف كرديم برنامه روي برنامه هاي ديگه باشه بعد دكمه اي قرار داديم و گفتيم كه اول اون خاصيت رو غير فعال كن، بعد برنامه ما به كمك اين متد به پشت همه پنجره هاي باز ديگه بره

PHP:
stage.nativeWindow.alwaysInFront=true;
 
mybtn.addEventListener(MouseEvent.CLICK ,func);
function func(event:MouseEvent):void
{
stage.nativeWindow.alwaysInFront=false;
stage.nativeWindow.orderToBack();
}

دقيقاً برعكس متد بالا متد زير هستش
PHP:
stage.nativeWindow.orderToFront();
 
  • Like
Reactions: FLV

جدیدترین ارسال ها

بالا