PDA

نسخه کامل مشاهده نسخه کامل : برنامه نويسي action script 3.00



SEPIDEH JAN
07-08-2008, 11:32
سلام دوستان . اين تاپيك كه خداي نكرده تكراري نيست ؟؟؟
يه خبري بدين:11:

Arman_BM
15-08-2008, 23:51
سلام -
نه دوست عزیز من که ندیدم و به شدت مشتاق آموزش های شما هستم.
برای شروع هم خودم با چند سوال (البته با اجازتون) اومدم.


تو این زبان، به چی ها میگن inheritance ؟
اصلا همچین چیزی داره؟؟؟؟؟؟؟؟؟؟؟؟

دستور as چیکار میکنه؟
مثلا تو کد زیر ، قسمتی که پر رنگ کردم یعنی چی؟

public function getIsValid(testObject:Object):Boolean {
var testString:String = (testObject as String);
if (testString) {
return testString.length > 0
}}

چه فرقی میکنه که کد رو به صورت بالا بنویسیم (استفاده از دستور as) ویا به این صورت پایین؟ :

public function getIsValid(testObject:Object):Boolean {
if (testObject is String) {
var testString:String = String(testObject);
return testString.length > 0;
}

کد زیر یعنی چی؟
var myObject:Object = new Object();

--------------------------------------------------------

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

ممنون دوستای عزیز.
یا حق

SEPIDEH JAN
17-08-2008, 20:44
تو این زبان، به چی ها میگن inheritance ؟
اصلا همچین چیزی داره؟؟؟؟؟؟؟؟؟؟؟؟


مثلا 3 تا کلاس داریم
کلاس اول friend کلاس دوم هست .(یعنی کلاس دوم موتونه از به Data Member ها و Member Function های کلاس اول استفاده کنه)
و کلاس سوم از کلاس دوم تشکیل شده یعنی همون Inheritance به صورت public(یعنی کلاس سوم به DataMember ها و Member function های کلاس دوم دسترسی داشته باشه )

دستور as چیکار میکنه؟



مثلا تو کد زیر ، قسمتی که پر رنگ کردم یعنی چی؟

public function getIsValid(testObject:Object):Boolean {
var testString:String = (testObject as String);
if (testString) {
return testString.length > 0
}}


فايل external ه اكشن اسكريپته ديگه !



چه فرقی میکنه که کد رو به صورت بالا بنویسیم (استفاده از دستور as) ویا به این صورت پایین؟ :

public function getIsValid(testObject:Object):Boolean {
if (testObject is String) {
var testString:String = String(testObject);
return testString.length > 0;
}



کد زیر یعنی چی؟
var myObject:Object = new Object();


فكر كنم اين توضيحات بدردت بخوره :


var myobject:Object = new Object ();
myobject.change = function (obj) {
var mycomponent = obj.target;
var myselected = mycomponent.selectedItem.data;
pricetxt.text = myselected.price;
descriptiontxt.text = myselected.description;
loadpic.loadMovie (myselected.pic);
};
mycombobox.addEventListener ("change", myobject);

توضيح كد بالا :
خط اول يك آبجكت را ايجاد مي كند . خط دوم ، رويداد change را كه همان رويداد شنوده ComboBox در خط آخر است را به آبجكت اضافه مي كند . خط سوم ، توسط متد target ، به مسير شنوده اي كه اين آبجكت را درخواست كرده دسترسي پيدا مي كند . خط چهارم ، به data آيتم انتخابي ComboBox ارجاع داده مي شود . و از آبجكتهاي درون data كه ( price , description , pic ) هستند در خط هاي بعدي براي بارگزاري استفاده مي كنيم .

SEPIDEH JAN
17-08-2008, 20:47
اينم توضيحات كامل بخشي كه ARMAN_BM عزيز ميخواست :

اين مقاله يك نمونه عملي براي استفاده كردن از سندهاي XML درون فايلهاي فلش مي باشد .

نوع سفارش :

شخصي به پيش شما مي آيد و از شما مي خواهد صفحه فلشي برايش ايجاد كنيد تا بتواند 3 تا از محصولات شركتش را كه داراي پارامترهاي نام كالا ، قيمت كالا ، توضيحي درباره كالا و يك قطعه عكس مربوط به كالا ، كه در كنار اين توضيحات بايد قرار گيرد را برايش طراحي كنيد . و بايد طوري طراحي شود كه بعدا خود مشتري بتواند براحتي محصولي را اضافه و يا حذف نمايد .

انجام كار :

1. يه پوشه جديد ايجاد كنيد
2. عكسهايي كه مشتري به شما داده را درون پوشه اي جديد به نام pic قرار دهيد .
3. در پوشه اصلي ، يك سند xml به نام company_data ايجاد نماييد و كد زير را به داخل آن كپي كنيد .


كد:<list>

<product name="camera_1">
<price>$800</price>
<description>this is camera_1</description>
<pic>pic/camera_1.jpg</pic>
</product>

<product name="camera_2">
<price>$1200</price>
<description>this is camera_2</description>
<pic>pic/camera_2.jpg</pic>
</product>

<product name="camera_3">
<price>$1500</price>
<description>this is camera_3</description>
<pic>pic/camera_3.jpg</pic>
</product>

</list>

چند نكته براي نوشتن سند XML :

نام tag ها كاملا شخصي است ، هر tag مي تواند شامل يك سري attribute هاي شخصي باشد ، مقادير attribute بعد از علامت = داخل دو كوتيشن قرار مي گيرد ، هر tag مي تواند شامل يك سري عناصر – ويژگيها و مقادير باشد ، هر tag با <tagname> شروع مي شود و با </tagname> بسته مي شود ، سندهاي xml به حروف كوچك و بزرگ حساس است .

توضيح كد بالا :

برچسب list در حقيقت بدنه سند xml ما محسوب مي شود . اين بر چسب شامل سه عنصر ، به نام product مي باشد . كه توسط ويژگي name ، نام محصول ما معرفي مي شود . هر عنصر product ، خود شامل سه عنصر مي باشد كه توسط مقادير آنها ما مي توانيم به قيمت كالا ، شرح كالا و آدرس محل قرار گيري تصوير كالا دسترسي پيدا كنيم .

4. در پوشه اصلي يك سند فلش ايجاد كنيد . كه شامل چهار لايه به نامهاي loadpic , text , component , as باشد .
5. به لايه component يك ComboBox اضافه كنيد و نام نمونه آن را mycombobox قرار دهيد .
6. در لايه text دو عدد متن از نوع static: اضافه كنيد و نام يكي را price و ديگري را :description قرار دهيد تا به عنوان برچسب از آنها استفاده نماييم . سپس دو متن ديگر از نوع dynamice در كنار برچسبها قرار دهيد . نام نمونه آنها را pricetxt و descriptiontxt قرار دهيد تا بعدا داده هاي ما را دريافت كنند .
7. در لايه loadpic يك سيمبل از نوع movieclip ، كه نقطه اتكائي ان در سمت بالا – چپ باشد را ايجاد كنيد و در محل مناسب قرار دهيد و به آن نام نمونه loadpic را بدهيد .
8. به فريم اول لايه as ، كد زير را وارد كنيد


كد:var myxml:XML = new XML ();
myxml.ignoreWhite = true;
myxml.load ("company_data.xml");
myxml.onLoad = function (success) {
if (success) {
success_function ();
} else {
trace ("Error");
}
};

توضيح كد بالا :
خط اول ، آبجكت xml را ايجاد مي كند . خط دوم ، فضاي خالي سند xml ما را ناديده مي گيرد . خط سوم ، سند xml ما را فراخواني مي كند ، اما چون اين فراخواني بسته به حجم سند ما ممكن است كمي با تاخير انجام شود از تابع onLoad در خط چهارم استفاده مي كنيم . اين تابع در صورتي كه بارگذاري سند موفقيت آميز باشد مقدار true و در غير اين صورت مقدار false را براي ما بر مي گرداند . در كد بالا اگر مقدار true باشد تابعي را فراخواني مي كند كه در زير آمده .


كد:var myarray:Array = new Array ();
success_function = function () {
var mylist = myxml.firstChild;
for (a = 0; a < mylist.childNodes.length; a++) {
var myproduct = mylist.childNodes[a];
var mylabel = myproduct.attributes.name;
var mydata_price = myproduct.childNodes[0].childNodes[0].nodeValue;
var mydata_description = myproduct.childNodes[1].childNodes[0].nodeValue;
var mydata_pic = myproduct.childNodes[2].childNodes[0].nodeValue;
var mydata = {price:mydata_price, description:mydata_description, pic:mydata_pic};
myarray.push ({label:mylabel, data:mydata});
}
};


توضيح كد بالا :
خط اول آرايه اي را براي ما ايجاد مي كنه تا بعدا داده هاي سند xml خود را در آن ذخيره كنيم . خط دوم تابعي را براي ما تعريف مي كند . خط سوم ، داراي يك متد به نام firstChild مي باشد كه اولين گره يا همان <list> سند را براي ما دريافت مي كنه و آن را به متغيري به نام mylist اختصاص مي دهد تا با اين كار mylist خود به عنوان يك شي xml ديگر محسوب شود . خط چهارم ، حلقه اي را براي ما ايجاد مي كند ، اين حلقه به اندازه تعداد عناصر <list> كه 3 تا است ادامه مي يابد . خط پنجم ، توسط متد childNodse[a] ، كه دسترسي به گره هاي عناصر را توسط شماره آرايه براي ما ميسر مي كند به <product> ها دسترسي پيدا مي كنيم . ( اولين عنصر با شماره [0] معين مي شود ) . اين دسترسي را توسط myproduct حفظ مي كنيم . خط ششم ، نام محصول ما را از attribute عنصر مي گيره و در متغير mylabel ذخيره مي كند . خط هفتم – هشتم و نهم ، مقدار محتواي گره هر محصول را توسط متد nodeValue براي ما مي گيره و در متغيرها ذخيره مي كنه . ( تذكر مهم : خود محتواي عنصر هم يك گره محسوب مي شود ) . سه خط كد بالا در خط دهم به صورت يك آبجكت تبديل مي شوند و در پايان هم توسط متد push ، داده هاي xml ما ، به صورت آبجكت در آرايه ذخيره مي شود . در اصل آرايه ما توسط اين حلقه به صورت زير تشكيل يافته است :


كد:myarray[a] = {label:نام_كالا , data:{price:قيمت , description: شرح, pic:آدرس_عكس}};

خوب حالا توسط كد زير داده هاي آرايه را به كامپوننت ComboBox وارد مي كنيم .

كد:mycombobox.dataProvider = myarray;

توسط كد زير براي نمونه آبجكت ComboBox يك شنوده را اضافه كنيم .


كد:var myobject:Object = new Object ();
myobject.change = function (obj) {
var mycomponent = obj.target;
var myselected = mycomponent.selectedItem.data;
pricetxt.text = myselected.price;
descriptiontxt.text = myselected.description;
loadpic.loadMovie (myselected.pic);
};
mycombobox.addEventListener ("change", myobject);

توضيح كد بالا :
خط اول يك آبجكت را ايجاد مي كند . خط دوم ، رويداد change را كه همان رويداد شنوده ComboBox در خط آخر است را به آبجكت اضافه مي كند . خط سوم ، توسط متد target ، به مسير شنوده اي كه اين آبجكت را درخواست كرده دسترسي پيدا مي كند . خط چهارم ، به data آيتم انتخابي ComboBox ارجاع داده مي شود . و از آبجكتهاي درون data كه ( price , description , pic ) هستند در خط هاي بعدي براي بارگزاري استفاده مي كنيم .

كد نهايي به صورت زير مي باشد :


كد:var myxml:XML = new XML ();
myxml.ignoreWhite = true;
myxml.load ("company_data.xml");
myxml.onLoad = function (success) {
if (success) {
success_function ();
} else {
trace ("Error");
}
};
var myarray:Array = new Array ();
success_function = function () {
var mylist = myxml.firstChild;
for (a = 0; a < mylist.childNodes.length; a++) {
var myproduct = mylist.childNodes[a];
var mylabel = myproduct.attributes.name;
var mydata_price = myproduct.childNodes[0].childNodes[0].nodeValue;
var mydata_description = myproduct.childNodes[1].childNodes[0].nodeValue;
var mydata_pic = myproduct.childNodes[2].childNodes[0].nodeValue;
var mydata = {price:mydata_price, description:mydata_description, pic:mydata_pic};
myarray.push ({label:mylabel, data:mydata});
}
};
mycombobox.dataProvider = myarray;
var myobject:Object = new Object ();
myobject.change = function (obj) {
var mycomponent = obj.target;
var myselected = mycomponent.selectedItem.data;
pricetxt.text = myselected.price;
descriptiontxt.text = myselected.description;
loadpic.loadMovie (myselected.pic);
};
mycombobox.addEventListener ("change", myobject);

SEPIDEH JAN
17-08-2008, 20:50
ابتدا از هر يک از کامپوننت هاي Alert,Button,List,MenuBar,TextArea,UIScrollBar يک عدد به داخل stage بکشيد و بعد آنها را حذف کنيد.
توجه: از داخل Library حذف نکنيد تا کلاس هاي آنها بتوانند مورد بهره برداري قرار گيرند.
حالا کد زير را در فريم 1 وارد کنيد:

كد:// Designer : Navid
// Begin
import mx.styles.CSSStyleDeclaration;
import mx.controls.Alert;
import mx.controls.Button;
import mx.controls.List;
import mx.controls.MenuBar;
import mx.controls.TextArea;
import mx.controls.UIScrollBar;
_root.createClassObject(MenuBar, "myMenuBar", 10);
this["createClassObject"](TextArea, "m", 11);
this.m._x = 7.2;
this.m._y = 32;
m.setSize(534.8, 328.5);
_root.createTextField("mystatusbar", 12, 7.2, 365.5, 298.9, 28.9);
mystatusbar.variable = "mytext";
_root.createEmptyMovieClip("preview", 13);
with (preview) {
beginFill("0x000000", 100);
moveTo(30.8, 73);
lineTo(484, 74);
lineTo(484, 321);
lineTo(31, 321);
lineTo(30.8, 73);
}
_root.preview.createClassObject(List, "fonts", 150, {_x:45, _y:125.3, _width:183, _height:103});
_root.preview.createClassObject(List, "styles", 160, {_x:240, _y:125.3, _width:100, _height:103});
_root.preview.createClassObject(List, "sizes", 156, {_x:350, _y:125.3, _width:100, _height:103});
_root.preview.styles.addItem({label:"Regulac"});
_root.preview.styles.addItem({label:"Italic"});
_root.preview.styles.addItem({label:"Bold"});
_root.preview.styles.addItem({label:"Bold Italic"});
for (j=9; j<=30; ++j) {
_root.preview.sizes.addItem({label:j});
}
_root.preview.createClassObject(Button, "OKButton", 153, {_x:260, _y:290, _width:100, _height:22});
_root.preview.createClassObject(Button, "CancelButton", 154, {_x:370, _y:290, _width:100, _height:22});
_root.preview.OKButton.label = "OK";
_root.preview.CancelButton.label = "Cancel";
_root.preview.OKButton.onRelease = function() {
_root.m.setStyle("fontFamily", _root.preview.fonts.selectedItem.label);
_root.m.setStyle("fontSize", _root.preview.sizes.selectedItem.label);
if (_root.preview.styles.selectedItem.label == "Regulac") {
_root.m.setStyle("fontStyle", "normal");
_root.m.setStyle("fontWeight", "none");
}
if (_root.preview.styles.selectedItem.label == "Italic") {
_root.m.setStyle("fontStyle", "italic");
_root.m.setStyle("fontWeight", "none");
}
if (_root.preview.styles.selectedItem.label == "Bold") {
_root.m.setStyle("fontWeight", "bold");
}
if (_root.preview.styles.selectedItem.label == "Bold Italic") {
_root.m.setStyle("fontWeight", "bold");
_root.m.setStyle("fontStyle", "italic");
}
_root.preview._visible = false;
};
_root.preview.CancelButton.onRelease = function() {
_root.preview._visible = false;
};
preview._visible = !true;
mywindow.visible = false;
myArray = TextField.getFontList();
for (i=1; i<myArray.length; ++i) {
_root.preview.fonts.addItem({label:myArray[i]});
}
this.preview.fonts.sortItemsBy("label", "ASC");
_global.styles.TextArea = new CSSStyleDeclaration();
_global.styles.TextArea.setStyle("textAlign", "left");
m.vScrollPolicy = "on";
m.hScrollPolicy = "on";
oneMenu = _root.myMenuBar.addMenu("File");
oneMenu.addMenuItem({label:"New", instanceName:"newNew"});
oneMenu.addMenuItem({type:"separator"});
oneMenu.addMenuItem({label:"Print", instanceName:"newPrint"});
oneMenu.addMenuItem({type:"separator"});
oneMenu.addMenuItem({label:"Exit", instanceName:"newExit"});
var myObject:Object = new Object();
function myClick(evt) {
if (evt.detail == 4) {
fscommand("quit", "");
}
if (evt.detail == 8) {
mx.controls.Alert.visible = false;
}
}
myObject.change = function(parameter) {
if (parameter["menuItem"].attributes.instanceName == "newNew") {
_root.m.text = "";
}
if (parameter["menuItem"].attributes.instanceName == "newPrint") {
printAsBitmap(_root.m, "bmovie");
}
if (parameter["menuItem"].attributes.instanceName == "newExit") {
mx.controls.Alert.show("Do you really to exit ?", "Warning...", mx.controls.Alert.OK | mx.controls.Alert.CANCEL, _root, myClick);
}
};
oneMenu.addEventListener("change", myObject);
twoMenu = _root.myMenuBar.addMenu("Edit");
twoMenu.addMenuItem({label:"Copy", instanceName:"newCopy", enabled:false});
twoMenu.addMenuItem({label:"Delete", instanceName:"newDelete", enabled:false});
twoMenu.addMenuItem({type:"separator"});
twoMenu.addMenuItem({label:"Select All - Ctrl+A", instanceName:"newSelectAll", enabled:true});
twoMenu.addMenuItem({label:"Time/Date", instanceName:"newTime", enabled:true});
var myObject2:Object = new Object();
myObject2.change = function(evt2) {
if (evt2["menuItem"].attributes.instanceName == "newCopy") {
System.setClipboard(_root.m.text);
}
if (evt2["menuItem"].attributes.instanceName == "newDelete") {
_root.m.text = "";
}
if (evt2["menuItem"].attributes.instanceName == "newTime") {
myDate = new Date();
_root.m.text += myDate.getHours()+":"+myDate.getMinutes()+" "+myDate.getFullYear()+"/"+myDate.getMonth()+"/"+myDate.getDay();
}
};
twoMenu.addEventListener("change", myObject2);
_root.onEnterFrame = function() {
mytext = "Col : "+m.length;
if (Key.isDown(Key.CONTROL)) {
if (Key.isDown(65)) {
Selection.setFocus(_root.m);
Selection.setSelection(0, _root.m.length);
}
}
myLength = _root.m.length;
if (myLength<>0) {
_root.depthChild1.newCopy.attributes.enabled = true;
_root.depthChild1.newDelete.attributes.enabled = true;
} else {
_root.depthChild1.newCopy.attributes.enabled = false;
_root.depthChild1.newDelete.attributes.enabled = false;
}
if (_root.depthChild2.myCheck.attributes.selected == true) {
_root.m.wordWrap = true;
} else if (_root.depthChild2.myCheck.attributes.selected == false) {
_root.m.wordWrap = false;
}
if (_root.depthChild3.myCheck2.attributes.selected == true) {
_root.mystatusbar._visible = 1;
} else {
_root.mystatusbar._visible = 0;
}
};
threeMenu = _root.myMenuBar.addMenu("Format");
threeMenu.addMenuItem({label:"Font", instanceName:"newFont", enabled:true});
threeMenu.addMenuItem({type:"check", label:"Word Wrap", enabled:true, selected:true, instanceName:"myCheck"});
myObject3 = new Object();
myObject3.change = function(evt3) {
if (evt3["menuItem"].attributes.instanceName == "newFont") {
_root.preview._visible = true;
}
};
threeMenu.addEventListener("change", myObject3);
fourMenu = _root.myMenuBar.addMenu("View");
fourMenu.addMenuItem({type:"check", label:"Status Bar", enabled:true, selected:true, instanceName:"myCheck2"});
fscommand("showmenu", false);
// End

حالا سيو کرده و برنامه را اجرا کنيد.
بهتر است خروجي به صورت exe باشد.

SEPIDEH JAN
17-08-2008, 20:51
كد زير را در فريم 1 وارد كنيد تا تشخيص دهد

حتما بايد كليد space فشرده شود و نتيجه ديده شود

يعني با هر بار فشردن آن اطلاعات به روز مي شود

ياد تون نره كليد space را فشار دهيد و نتيجه را ببينيد:

كد:_root.createTextField("display", 0, 100, 100, 200, 200);
var myTextFormat:TextFormat = new TextFormat();
myTextFormat.font = "tahoma";
myTextFormat.size = 14;
display.selectable = false;
var myObject:Object = new Object();
myObject.onKeyUp = function() {
if (Key.getCode() == (Key.SPACE)) {
display.text = "لطفا کمي صبر کنيد";
display.setTextFormat(myTextFormat);
var myLoadVars:LoadVars = new LoadVars();
var myLoadVars2:LoadVars = new LoadVars();
myLoadVars.sendAndLoad("[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]", myLoadVars2, "POST");
myLoadVars2.onLoad = function(a:Boolean) {
if (a == true) {
display.text = "شما به اينترنت وصل هستيد";
display.setTextFormat(myTextFormat);
}
if (a == false) {
display.text = "شما به اينترنت وصل نيستيد";
display.setTextFormat(myTextFormat);
}
};
}
};
Key.addListener(myObject);

Arman_BM
18-08-2008, 00:32
سلام
Sepideh Jan عزیز.
بسیار لطف کردید که انقدر با حوصله به سوالات من پاسخ دادید و چند پست مفید دیگر هم دادید اما....
اما کاشکی یکم ساده تر توضیح میدادید - من فقط جواب سوال آخرم رو تونستم بفهمم. البته خیلی ممنونم اما اگه توضیح رو در حد کسی رو بگین که از برنامه نویسی فقط تابع و آرایه و حلقه ها و امثالهم رو میدونه خیلی مفید تره .. اگه ساده تر هم شد که چه بهتر ..
بسیار و بسی ممنونم
------------------------------------
در مورد پست های خودتون هم این قضیه وجود داره. صرف دادن کد فقط کار عده ی کمی رو راه میندازه (ماهی دادن هست)
اما اگه دستورات خود As3 رو شروع کنین توضیح دادن ویا همون As3 رو درس بدید خیلی خیلی عالی و پر طرفدار خواهد شد . (ماهی گیری یاد دادن است)

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

منتظر آموزش های بعدی شما هستیم

یا حق

SEPIDEH JAN
18-08-2008, 10:56
اين پست ويرايش شد

SEPIDEH JAN
18-08-2008, 11:05
سلام دوست عزيز
چشم !
از اول اكشن اسكريپت رو توضيح ميدم .

SEPIDEH JAN
18-08-2008, 11:11
يكي از جلوه هاي مهم فلش اينكه شما مي تونيد با يه كم برنامه نويسي تسلط بيشتري را بر روي اون كارهاي گرافيكي
كه با فلش انجام مي ديد داشته باشد.
نماي ظاهري Active Script :

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

در قسمت سمت چپ قسمت Active Script يك پنجره اي است كه شامل منو هاي مختلفي است كه هر كدام از آن منو ها هم داراي زير منوهاي مختلفي هستند.
منوي Actions داراي اجزايي اصلي است كه با آن ها بيشتر كارهاي Active Script را انجام مي دهند.
منوي Operators مربوط مي شود به آن علامت هايي كه در دستورات شرطي يا حلقه و... مورد استفاده قرار مي گيرد.
منوي Function مربوط مي شود به تابع ها و نوع متغير ها و...
منوي Constants مربوط مي شود به مقدار دهي متغير ها ...
منوي Properties و Objects مربوط مي شود به خصوصيات مربوط به Object ها (اشيا) و ...
منوي Deprecated شامل خصوصياتي براي تمام اشيا مي باشد ...
و بالاخره منوي Index :
اين منوي شامل تمام اجزاي ديگر منو ها به ترتيب الفبا مي باشد.

SEPIDEH JAN
18-08-2008, 11:15
در ادامه بحث مي خواهم اطلاعات كامل تري در اختيارتان قرار دهم.
نماي منوي بالايي Action Script :

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
در سمت راست اين منو يك آيكن وجود دارد [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] كه با زدن بر روي اين آيكن منوي ديگري باز مي شود :

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
اين منو شامل ابزار هايي براي استفاده بهتر از Action Script است از جمله مثلا" جستجوي رشته اي در Action Script يادخيره Action Script هاي نوشته شده و...
2 گزينه اوليه اين منو بسيار مهم هستند كه اين 2 گزينه چگونگي كار با Action Script را مشخص مي كند.
يعني اگر شما بر روي گزينه Normal Mode كليك كنيد در قسمت نوشتن دستور ها به طور دستي نمي توانيد تغيير ايجاد كنيد ، اما اگر گزينه Expert Mode را انتخاب كنيد مي توانيد به صورت دستي هم دستورات و كد ها را همانند يك زبان برنامه نويسي تغيير دهيد يا چيز ديگر طبق قوانين برنامه نويسي به كد ها اضافه كنيد.

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
ممكن است اين مطلب براي شما مقداري گيج كننده باشد كه در جلسات آينده بيشتر توضيح ميدهم(بر روي مثال ها).
و حالا يك مقدار در باره قوانين و مسايل برنامه نويسي :
اصل كار برنامه بر روي متغيير هاست .متغيير به قسمتي از حافظه اصلي كامپيوتر گفته مي شود كه ما براي ذخيره سازي اطلاعات از آن ها استفاده مي كنيم.
زباني كه Action Script , Flash از اون استفاده مي كند خيلي شبيه JavaScript يا همون C++ است.
متغيير ها انواع مختفي دارند كه ما مي توانيم بسته به نياز خود آن ها را تعريف كرد.متغيير ها به 2 نوع به نام عددي و رشته اي تقسيم مي شوند.
نمي خواهم اين قسمت را فعلا" زياد توضيح بدم چون امكان داره براي شما خسته كننده باشه. ولي فقط اين رو بگم كه با متغيير هاي عددي مي شود محاسبات رياضي انجام داد اما با متغيير هاي غير عددي يا همون رشته نمي شود.
در اين زبان براي مقدار دهي به متغيير ها از = استفاده مي شود مثلا " اگر بخواهيم مقدار 2 را در متغيير x قرار دهيم مي نويسيم :
x=2 البته اگر بنويسيم ;x=2 بهتر است چون علامت ; به معناي اتمام دستور است.

SEPIDEH JAN
18-08-2008, 11:16
اين جلسه مي خوام با آوردن يك مثال به برنامه نويسي تحت Action Script بيشتر آشنا بشويد.
يه توضيح مختصر :
1 . قبلا" گفتم كه متغيير ها انواعي دارند وبراي استفاده از آن ها بايد آن ها را در اول برنامه تعريف كرد اما در در زبان Flash ; Action Script مي توان بدون اينكه متغيير را تعريف كرد از آن ها استفاده كرد.
2 . تعريف تابع : تابعي به تيكه كدي گفته مي شود كه از طرف زبان برنامه نويسي يا خود برنامه نويس براي سرعت بخشيدن و آسان تر شدن كار ها از آن ها استفاده مي شود.
اين مثالي كه مي زنم به اين صورت است كه اگر شما به فرض 3 انيميشن داشته باشد و بخواهيد به صورت تصادفي (Random) نشان داده شود.
خوب فلاش را اجرا كرده و 3 تا Scene بسازيد و در هر كدام از آن ها يه انيميشن طراحي كنيد.
بعد به Scene1 آمده و با موس بر روي فريم اول كليد كنيد وبعد با زدن كليد F9 منوي Action Script را فعال كنيد.
بعد با زدن كليدهاي Ctrl+Shift+E حالت Action Script را از Normal Mode به Expert Mode تغيير دهيد.( كليد قرينه اين گزينهCtrl+Shift+N است كه Action Script به حالت Normal Mode بازخواهد گشت.)
حالا در قسمت وارد كردن كد ها بنويسيد :
x=Random(4);
تابع Random تابعي است كه عدد تصادفي درست مي كند. و اين دستور به Action Script مي گويد كه يك عدد تصادفي توليد بين 1 تا 3 توليد كن و آن را در متغيير x قرار بده.
بعد در همين فريم بعد از دستور قبلي اين دستور ها را وارد كنيد:
if (x == 1) {
gotoAndPlay("Scene 1", 2);
} else if (x == 2) {
gotoAndPlay("Scene 2", 1);
} else if (x == 3) {
gotoAndPlay("Scene 3", 1);
}

در اينجا دستوري قرار دارد به نام if . از اين دستور براي گذاشتن شرط در برنامه استفاده مي شود.
خط اول اين شرط را بررسي ميكند كه اگر مقدار موجود در متغيير x = 1 بود دستور gotoandplay("Scene 1", 2) را اجرا كن.
كه اين دستور به اين معني است كه به Scene1 ; فرم دوم برو .
اگر if اول اجرا شد يعني اگر مقدار x=1 بقيه كد اجرا نمي شود به جز دستوري كه در زير مجموعه if بود ولي اگر شرط اول درست نباشد به خط سوم مي رود.
در خط سوم نوشته شده } else if (x==2) { . اين دستور مي گويد اگر به غير از شرط بالا بود شرط ببين آيا x=2 است يا نه اگر شرط درست باشد دستور gotoandplay("Scene 2",1) اجرا مي شود و ديگر بقيه كد اجرا نمي شود.
و در خط پنجم هم همينطور است يعني اگر شرط دوم اجرا نشد و x=3 بود دستور gotoandplay("Scene 2",1) اجرا شود.
و حالا در پايين شما بايد به فرم آخر آن ها رفته و در Action Script اين فرم ها بنويسيد:
stop();
البته مي شه اين مثال را كامل ترش هم كرد كه اميد وارم بتونيد اين كار رو خودتون انجام بدهيد.
اما اگه سوالي يا هر اشكال ديگه اي داشتيد مي تونيد در انجمن Action Script بپرسيد كه يا خودم يا كسي ديگه از دوستان كمكتون ميكنه.

SEPIDEH JAN
18-08-2008, 11:19
اين جلسه هم مي خواهم درادامه درس مثال ديگري از قابليت هاي فلش رو نشونتون بدم.
خوب در قدم اول وارد فلش شده و به ترتيب کارهاي زير را انجام دهيد.
يه مربع بسازيد.( فعلا" اندازش مهم نيست) حالا در حالي که مربع را انتخواب کرديد ; کليد F8 را زده و گزينه MovieClipرا انتخاب کرده و اسمش رو bbبزاريد .حالا به منوي Windowرفته و گزينه Bottonsرا از منوي CommonLibrariesانتخواب کنيد.
يک کتابخانه باز شده که يک سري دکمه در داخل اون وجود داره به سليقه خودتون يک دکمه ساده و 2 تا دکمه فلش دار که يکي به سمت راست است و ديگري به سمت چپ است رو انتخواب کرده و دونه دونه به سمت مستطيلي که ساختيد بکشيد تا به فايل شما اضافه بشن.
حالا بر روي مربعي که ساختيد برويد و طول و عرض اون به 400 تغيير بدهيد.
( براي اينکه اندازه ها دقيق باشه به منوي Propertiesبرويدو در قسمت که نوشته 400 ; W: و در جايي که نوشته400 ; H: را وارى کنيد.)
و حالا يک يه textاضافه کنيد و نوع اونو در Propertiesتش از نوع DynamicTextقرار دهيد و در زير اين گزينه يه قسمتي است که نوشته instanceName; بر روي اون کليک کرده و تا اين نوشته پاک شود و در اينجا بنويسيد edit1; اين نام اون Text مي شود.
و حالا براي اينکه اين Textشما معلوم باشه بايد يه مستطيلي رو در پشت اون قرار بديد تا نوشته اون معلوم باشه.
خوب حالا کم کم وارد ActionScriptمي شيم. حالا روي مربع کليد کرده و همون طور که براي Text اسم گزاشتيد اسم اين رو هم Box1بزاريد .
و حالا بر روي اون دکمه اي که فلش نداره کليک کنيد و بعد F9 رو بزنيد تا ActionScriptآورده شود.حالا کليد هاي Ctrl+Shift+Eرو بزنيد تا ActionScript به حالت ExpertMode برود. بعد کدهاي زير رو وارد کنيد

on (release) {
pic = edit1.text;
loadMovie("images/image"+pic+".jpg", "box1");
box1._x = 176;
box1._y = 26.9;
}

خط اول يعني وقتي روي اين دکمه کليک کرد بقيه دستورات که بعد از { وجود داره انجام بشه.
خط دوم : ما به اون Textکه قبلا" شاختيم اسم Edit1را داديم حالا اين خط ميگويد که مقدار عددي که در اون Text وجود دارد به داخل متغير Pic برود.
يه نکته : اين فايلي را که ساخته ايد ذخيره کنيد و فلش را Minimizeکنيد و به اون مسيري که اين فايل رو ذخيره کرديد برويد و در اون جا يه Folder به اسم images بسازيد و 3 عکس با انشعاب jpgدر اون قرار بديد و به ترتيب اسم اون ها به image1.jpg و image2.jpg و image3.jpg تغيير بدهيد.
خط سوم : اين خط اون عکس هايي رو که در Folder ; images قرار دادي بسته به عدد اون Text قبلي مياره.
مثلا" اگه عدد داخل اون Text; 1 باشه image1.jpg رو براي شما مياره و حالا مي دونيد اون کجا لود مي کنه ; خوب معلومه اونا رو به جاي اون مربعي که ساختيد مياره ; همون که اسمش Box1 است.
خط چهارم وپنجم هم اندازه x ,y (جاي مربع در صفحه ) تعيين مي کنه که اين 2 عدد به دست خودتون و مي تونيد اونو تغيير بديد.
خوب حالا روي کليدي که روش علامت سمت راست است کليک کنيد و بعد F9 بزنديد و بعد کد زير رو وارد کنيد:

on (release) {
edit1.text = parseInt(edit1.text)+1;
}

خط اول که معني شو ياد گرفتيد.
خط دوم : اين خط مقادري که در داخل edit1وجود داره رو به ميگيره و يه واحد به اون اضافه مي کنه.
روي کليد که فلش اون به سمت چپ است کليک کنيد و بعد F9 رو بزنيد و کد زير را وارد کنيد :

on (release) {
edit1.text = parseInt(edit1.text)-1;
s1 = edit1.text;
if (s1<=1) {
edit1.text = "2";
}
}



خط دوم : اين خط مقادر موجود در Edit1رو مي گيره و بعد يه واحد کم مي کنه .
خط سوم : اين خط مقادر موجود در Edit1رو ميگيره و داخل متغيير s1قرار مي ده.
خط چهارم و پنجم: اين خط دستور شرطي است و اين شرط را برسي مي کند که اگه مقدار edit1کمتر از 1 شد مقدار Edit1رو برابر با 1 قرار بده.
خوب حالا فايل رو اجرا کنيد و ببينيد که چي کار کرديد .حالا اگه روي اون دکمه که هيچ علامتي نداره بزنيد مي بينيد که اون عکس هم که با Edit1يعني اگه به فرض Edit1موجوديش 1 باشه image1.jpg مياد .

خوب حالا درپايان کار اميد وارم از درس امروز هم خوشتون اومده باشه.

SEPIDEH JAN
18-08-2008, 11:26
راستي بچه ها من چند روزي نيستم . اينارو تمرين كنين تا من برگردم .
موفق باشيد .

3Dmajid
18-08-2008, 11:27
یه سوال، زبان اکشن اسکریپت فلش به کدوم زبون برنامه نویسی شباهت داره ؟

SEPIDEH JAN
18-08-2008, 17:51
یه سوال، زبان اکشن اسکریپت فلش به کدوم زبون برنامه نویسی شباهت داره ؟

اكشن اسكريپت يه چيزايي تو مايه ي جاوا اسكريپته . چطور مگه ؟؟؟

Arman_BM
18-08-2008, 23:24
دوست مهربان - واقعا ممنون ولی اینا As2 نیست؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

SEPIDEH JAN
19-08-2008, 10:49
دوست مهربان - واقعا ممنون ولی اینا As2 نیست؟؟؟

دوست عزيز . كسي كه واسه بار اول ميخواد با اين برنامه كار كنه بايد بدونه محيط كلي اكشن اسكريپت به چه چيزايي وابسته است . اگه منظورتون عكس اوليه كه گذاشتم ، بله اين عكس مربوط به اكشن اسكريپت 2000 هستش ولي باقي مطالب مربوط به اكشن اسكريپت 3.00 ميشه .
بازم تشكر بخاطر سوالتون .
همون طور كه گفتم من چند روزي يه مشكلي برام پيش اومده واسه همين همون مطالبي رو كه داشتم گذاشتم .
ولي قول ميدم بعد از 1.5 هفته ديگه مطالب كامل و ساده شده اي رو فقط از اكشن اسكريپت 3.00 و شباهتهاش به برنامه هاي ديگه در اختيارتون قرار بدم .
:11:

Arman_BM
19-08-2008, 11:37
سلام . شما لطف دارین . قصد بدی نداشتم . من سر پا منتظر آموزش های As3 هستم چون خودتون میدونید چقدر با As2 فرق پیدا کرده.
راستی ممکنه لطف کنین جواب سوال های من رو که اول پرسیدم یکم زیر دیپلم بدید. آخه میدونین من اطلاعاتم خیلی مقدماتی هست (در سطح حلقه و تابع و آرایه و امثالهم).

باز هم ممنون از شما دوست مهربان .

3Dmajid
19-08-2008, 19:03
اكشن اسكريپت يه چيزايي تو مايه ي جاوا اسكريپته . چطور مگه ؟؟؟

گفتم اگه شبیه vb باشه یاد بگیرم.

NARAFIGH2
19-08-2008, 22:33
onRelease
الان به نظر شما اين متعلق به As3.0 است و از مقدمات ان محسوب مي شود؟

Arman_BM
20-08-2008, 01:30
onRelease
الان به نظر شما اين متعلق به As3.0 است و از مقدمات ان محسوب مي شود؟
__________________

سلام دوست عزیز.
ایشون (SEPIDE JAN) که عرض کردند چون فرصت نداشتند یکی از آموزش های قدیمی رو گذاشتند.
قرار شد به زودی آموزش های جدید AS3 رو بگذارند.

NARAFIGH2 عزیز لطفا استاد عزیز ما رو اذیت نکن. همین که زحمت کشیده و قصد داره آموزش های AS3 رو شروع کنه واقعا جای تشکر داره.

SEPIDE JAN عزیز لطفا روحیت رو حفظ کن و کما فی آینده ( ! ) ما رو از آموزشات بهره مند کن.

یا حق

mostafavi_fafa
14-02-2009, 19:06
با احترام و تشکر
شما فرمودید که باید 3 تا انیمیشن درست کرد... اما من این کار و بلد نیستم
ممکنه لطف کنید و توضیح بدید؟

takpar1
04-05-2009, 15:21
oh
very good.
tanks.

atoolah
13-05-2009, 10:16
Sepideh Jan کجایی؟

چرا تاپیک به این خوبی خوابیده ؟
حیف نیست؟:41:

اگه هستی و حال داری ادامه بده !

saaf1380
16-05-2009, 08:22
ساخت دکمه در نرم افزار فلش چگونه است؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟

شلغم نپخته
17-05-2009, 08:24
سلام!

وقتی یه چیزی کشیدی، با موشواره اون رو انتخاب کن و بعد دکمه F8 رو بزن بعدش هم button رو انتخاب کن و تاییدش کن.

موفق باشید / یا علی

SEPIDEH JAN
07-03-2010, 15:23
سلام دوستان
اگه خدا بخواد میخوام این تاپیک و ادامش بدم ...
بخاطر این تاخیر طولانی واقعا ازتون میخوام