Tải bản đầy đủ (.pdf) (14 trang)

thanhanlang Co so lap trinh flash AS 30

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (619.53 KB, 14 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

<b>CƠ SỞ CỦA LẬP TRÌNH FLASH AS 3.0 </b>
<b>VIẾT CODE CHO AS 3.0 </b>


Tạo một file flash 3.0 ( có đi . fla ): <i>ọ</i>
và lưu lại.


Tạo một file ActionScript ( có đi .as để viết code cho package ):


<i>ọ</i> và lưu lại.


Trong các chương trình đơn giản nên lưu file .as và .fla vào chung một folder.
Viết code cho file flash đơn giản :


Có 2 cách :
Cách 1:


- Viết các lớp vào file .as ( actionScript File) lưu lại với tên là tên lớp
- Trong file .fla dùng lớp đó ta đặt tên lớp vào mục Document class


- Bấm Ctrl+Enter ñể chạy thử. Sau khi chạy rhwr trong folder chứa 2 file trên xuất hiện
thêm file .swf


Lưu ý : khi dùng cách này ta có thể đưa các đối tượng vào màn hình làm việc của
flash ( như thêm symbol, hình vẽ, chữ ..) nhưng khơng được viết code trong file .fla
này , nếu khơng khi biên dịch sẽ bị lỗi.Chỉ được phép viết code trong file .as.


Cách 2: Mở trang viết code bằng cách ấn F9 hay chọn . Khi trang viết
code mở ra ta kích vào Script Assist để đóng trợ giúp và dễ dang chỉnh sửa code mình viết (
nếu để Script Assist thì khơng viết code trực tiếp được và dĩ nhiên là khó sửa code hơn). Sau
đó ta nhập code vào ( như khi viết code trực tiếp ở AS 2.0 )



</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

Trong file fla ñưa tên class như sau:


</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

Cách 2 :


Viết code trực tiếp :


Xử lý sự kiện :


Cấu trúc của một xử lý sự kiện trên một ñối tượng là thiết lập addEventListener vào sự kiện
ñó. Cú pháp như sau:


(ñối tượng).addEventListener( loại sự kiện , tên hàm xử lý sự kiện )
Trong ñó :


Loại sự kiện : là các sự kiện tác đọng lên đối tượng như kích chuột ,nhả chuột , gõ phím , sự
kiện về frame …Mỗi sự kiện ñều ñược ñưa vào bởi tham số dạng String mơ tả sự kiên , ví dụ
:MouseEvent.CLICK, MouseEvent.MOUSE_UP, Event.ENTER_FRAME,


Event.ADDED_TO_STAGE, KeyboardEvent.KEY_DOWN …


Tên hàm xử lý sự kiện : là tên hàm ñược gọi khi sự kiện xảy ra . Các hàm sự kiện bao giờ
cũng có tham số là sự kiện .


</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

import flash.display.Sprite;
import flash.events.Event;
graphics.lineStyle(1, 0, 1);


addEventListener(Event.ENTER_FRAME, onEnterFrame);
function onEnterFrame(event:Event):void {



graphics.lineTo(Math.random( ) * 400,
Math.random( ) * 400);


}


Sử dụng lối viết theo package ta ñược :
package {


import flash.display.Sprite;
import flash.events.Event;


public class ExampleApplication extends Sprite {


public function ExampleApplication( ) {
graphics.lineStyle(1, 0, 1);


addEventListener(Event.ENTER_FRAME, onEnterFrame);
}


private function onEnterFrame(event:Event):void {
graphics.lineTo(Math.random( ) * 400,


Math.random( ) * 400);
}


}
}



Sau ñây là ví dụ về một số sự kiện keyboard. Khi chạy chương trình ta kích vào hình vng
màu xanh và gõ phím . Trên màn hình output sẽ xuất hiện một số thông tin.


Code viết dạng 1:
package {


import flash.display.Sprite;


import flash.display.DisplayObject;
import flash.events.*;


public class KeyboardEventExample extends Sprite {
private var child:Sprite = new Sprite();


private var bgColor:uint = 0x00CCFF;
private var size:uint = 80;


public function KeyboardEventExample() {
child.graphics.beginFill(bgColor);


child.graphics.drawRect(0, 0, size, size);
child.graphics.endFill();


</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

child.addEventListener(MouseEvent.CLICK,
clickHandler);


child.addEventListener(KeyboardEvent.KEY_DOWN,
keyDownHandler);




}


private function clickHandler(event:MouseEvent):void {
stage.focus = child;


}


private function


keyDownHandler(event:KeyboardEvent):void {


trace("keyDownHandler: " + event.keyCode);
trace("ctrlKey: " + event.ctrlKey);


trace("keyLocation: " + event.keyLocation);
trace("shiftKey: " + event.shiftKey);


trace("altKey: " + event.altKey);
}



}


}


Code viết theo cách 2 :


import flash.display.Sprite;


import flash.display.DisplayObject;


import flash.events.*;


var child:Sprite = new Sprite();
var bgColor:uint = 0x00CCFF;


var size:uint = 80;


child.graphics.beginFill(bgColor);


child.graphics.drawRect(0, 0, size, size);
child.graphics.endFill();


addChild(child);


child.addEventListener(KeyboardEvent.KEY_DOWN,
keyDownHandler);


child.addEventListener(MouseEvent.CLICK, clickHandler);
function keyDownHandler(event:KeyboardEvent):void {
trace("keyDownHandler: " + event.keyCode);
trace("ctrlKey: " + event.ctrlKey);


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

trace("shiftKey: " + event.shiftKey);
trace("altKey: " + event.altKey);
}


function clickHandler(event:MouseEvent):void {
stage.focus = child;


}



Kết quả chạy chương trình và màn hình Output:


Sử dụng các phép tốn :


Flash cho phép sử dụng các phép toán : =,+,-,*,/, +=,-=,*=,/=,++,--,==,…
như các ngơn ngữ lập trình khác để xử lý các phép toán , phép gán . ðể dùng các hàm toán
học, các hằng số, ta sử dụng cú pháp : Math.(tenham(các đơi_số)) , Math.(ten hằng số)
Ví dụ:


</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

hay :


quantity += 6;


quantity = quantity / factor;hay:
quantity /= factor;


quantity++; nghĩa là : quantity = quantity + 1 hay quantity +=
1;


quantity =Math.sin(1.234);
quantity=Math.PI;




trace(5 == 6); // kết quả : false
trace(6 == 6); // kết quả : true
trace(6 == "6"); // kết quả : true
trace(5 == "6"); // kết quả : false
trace(5 != 6); // kết quả : true


trace(6 != 6); // kết quả : false
trace(6 != "6"); // kết quả : false
trace(5 != "6"); // kết quả : true


var quantity:int = 5;
if (quantity ==6) {
trace("Chinh xac !");
}


trace("quantity bang " + quantity); // ket qua: quantity bang
6


var quantity:int = 5;
if (quantity is int) {


trace("loai du lieu cua quantity la integer.");
}


trace(5 < 6); // kết quả : true
trace(5 > 5); // kết quả : false
Các cấu trúc ñiều kiện :


Các cấu trúc điều kiện trong AS 3.0 hồn tồn giống các cấu trúc ñiều kiện của AS 2.0 và đại
đa số các ngơn ngữ khác. Các ví dụ sau đây sẽ minh hoạ cho điều đó


<i>if (animalName == "rua") { </i>
<i> </i>


<i> trace("rua la dong vat di chuyen rat cham"); </i>
<i>} </i>



</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

if (animalName == "turtle") {
trace("Ban da tra loi Dung");
}


else {


trace("Ban da tra loi Sai.");
}


---


if (animalName == "turtle") {


trace ("Ban da tra loi Dung.");
}


else if (animalName == "dove") {


showMessage ("dove cung khong phai.");
}


---


if (animalName == "turtle") {
race ("Dung.");


}



else if (animalName == "dove") {


trace ("Sai.");
}


else {


trace("thu lai .");
}


---


var animalName:String = "turtle";
switch (animalName) {


case "turtle":
trace("Dung.");
case "dove":


trace("Sai.");
default:


trace("lap lai.");
}


---


</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

if (current.getDate( ) == 17 && current.getMonth( ) == 3) {


trace ("Happy Birthday, Bruce!");


}


----


if (!((userName == "ABC") || (userName == "CDE"))) {


trace ("Xin loi chi co ABC hay CDE moi co quyen truy cap.");
}


Các cấu trúc lặp :


Do sự tương tự của cấu trúc lặp ở các ngơn ngữ khác nên ở đây khơng nêu lại cú pháp của
nó.


for (var i:int = 0; i < 10; i++) {
// Display the value of <i>i</i>.


TRace(i);
}


---


for (var i:int = 1; i <= 3; i++) {
for (var j:int = 1; j <= 2; j++) {


trace(i + " X " + j + " = " + (i * j));
}



}


----


for (var i:int = 1; i <= 3; i++) {
for (var j:int = 1; j <= 3; j++) {
for (var k:int = 1; k <= 3; k++) {


trace(i + " X " + j + " X " + k + " = " + (i * j * k));
}


}
}
---


for (var i:int = 10; i > 0; i--) {
trace(i);


}


---


for (var i:Number = 50000; i > 2; i = Math.sqrt(i)) {
trace(i);


</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

var myObject:Object = {firstName:"Tara", age:27, city:"San
Francisco"};


for (var prop in myObject) {



trace("myObject."+prop+" = "+myObject[prop]);
}


---


var myObject:Object = {firstName:"Tara", age:27, city:"San
Francisco"};


for each (var item in myObject) {
trace(item);


}
---


var i:Number = 0;
while (i < 20) {
trace(i);
i += 3;
}


---


var myVar:Number = 0;
do {


trace(myVar);
myVar++;


}



while (myVar < 5);
---


with (someOther_mc) {
_x = 50;


_y = 100;


gotoAndStop(3);
}


Cấu trúc try … catch


import flash.display.Sprite;
var spr:Sprite = new Sprite();
try {


spr.addChild(spr);
}


catch (e:ArgumentError) {


trace (e); // ArgumentError: Error #2024: An object may
not be added as a child of itself.


}


--- try catch finally


private function displayMessage(message:String):void {


try {


</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>

throw new Error("The message is undefined.");
}


trace(message);
}


catch (errObject:Error) {
trace(errObject.message);
return;


}


finally {


// This runs, even if an error is caught.
trace("This is the last line displayed.");
}


}


--- ném lỗi


private function displayMessage(message:String):void {
try {


if(message == undefined) {


throw new Error("The message is undefined.");


}


trace(message);
}


catch (errObject:Error) {
trace(errObject.message);
return;


}


// This line won't run if an error is caught.
trace("This is the last line displayed.");
}


--- Timer : Thực hiện action sau một khoảng thời gian
Dùng lớp Timer


var timer:Timer = new Timer(delay, repeatCount);
delay : thời gian dừng ( miligiay)


repeatCount : số lần lặp


ví dụ : cho xuất hiện khoảng thời gian từ lần gọi hàm onTimer trước ñến lần gọi sau ( tính
miligiây), khoảng thời gian này là xấp xỉ 500 miligiay vì ta đặt thời gian chờ là 500miligiay.
package {


import flash.display.Sprite;
import flash.events.TimerEvent;
import flash.utils.Timer;



</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12>

public class ExampleApplication extends Sprite {


// Declare and initialize a variable to store the
value


// of the previous timer reading.
private var _PreviousTime:Number = 0;


public function ExampleApplication( ) {
var tTimer:Timer = new Timer(500, 10);
tTimer.addEventListener(TimerEvent.TIMER,
onTimer);


tTimer.start( );
}




private function onTimer(event:TimerEvent):void {


// Output the difference between the current timer
value and


// its value from the last time the function was
called.


trace(flash.utils.getTimer( ) - _PreviousTime);
_PreviousTime = flash.utils.getTimer( );



}
}
}


Ví dụ sau cho 2 hình : trịn và hình chữ nhật di chuyển sau một khoảng thời gian delay là
0,05s (hình chữ nhật ) và 0,1s ( đường trịn ):


package {


import flash.display.Sprite;
import flash.events.TimerEvent;
import flash.utils.Timer;




public class ExampleApplication extends Sprite {
private var _square:Sprite;


private var _circle:Sprite;




public function ExampleApplication( ) {


// Create the two sprites and draw their shapes
_square = new Sprite( );


_square.graphics.beginFill(0xff0000);



_square.graphics.drawRect(0, 0, 100, 100);
_square.graphics.endFill( );


</div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>



_circle = new Sprite( );


_circle.graphics.beginFill(0x0000ff);
_circle.graphics.drawCircle(50, 50, 50);
_circle.graphics.endFill( );


addChild(_circle);
_circle.x = 100;
_circle.y = 200;


// Create the two timers and start them
var squareTimer:Timer = new Timer(50, 0);


squareTimer.addEventListener(TimerEvent.TIMER,
onSquareTimer);


squareTimer.start( );


var circleTimer:Timer = new Timer(100, 0);
circleTimer.addEventListener(TimerEvent.TIMER,
onCircleTimer);



circleTimer.start( );
}




// Define the two handler methods


private function onSquareTimer(event:TimerEvent):void
{


_square.x++;
}




private function onCircleTimer(event:TimerEvent):void
{


_circle.x++;
}


</div>
<span class='text_page_counter'>(14)</span><div class='page_container' data-page=14></div>

<!--links-->

×