+ All Categories
Home > Documents > SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

Date post: 20-Dec-2015
Category:
View: 215 times
Download: 1 times
Share this document with a friend
35
M1205 Interactivity Topic 03: Flow Control Spring 2010 SCM-CityU 1
Transcript
Page 1: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

SM1205 Interactivity

Topic 03: Flow Control

Spring 2010 SCM-CityU 1

Page 2: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

Button

• Simplest UI element• Map action to each button

Spring 2010 SCM-CityU 2

pressperform action

Page 3: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

Exercise

• Use 2 buttons to control the size of the photo

Spring 2010 SCM-CityU 3

Page 4: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

Album Example

• Two buttons for nagviation (Previous & Next)

Spring 2010 SCM-CityU 4

Page 5: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

Album Example

• Load Image sequence as keyframes– Create new Flash file (AS3.0)– Open menu item “File => Import => Import to stage”– Select the first photo file (d/l from course homepage)– The system finds image sequence, answer “Yes” to

load the all files

Spring 2010 SCM-CityU 5

Page 6: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

Album Example

• Add Controls• Add one more layer (layer2)• Add two buttons to this layer (btn_prev, btn_next)

– Open “Window => Common library => buttons”– Select and add the button you like

• Add a dynamic text field(txt_index)

Spring 2010 SCM-CityU 6

Page 7: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

Album Example

• Add ActionScript & test the behavior• Goto frame 1 layer 2• Open the action panel (press F9)• Type the code in next slide

– We will explain the code

• Press Ctrl+Enter to test the movie• You can press the buttons to view the

previous/next photo

Spring 2010 SCM-CityU 7

Page 8: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

Album Examplestop();

txt_index.text = currentFrame + "/" + totalFrames;

btn_prev.addEventListener(MouseEvent.CLICK, onPrevButtonClick);

btn_next.addEventListener(MouseEvent.CLICK, onNextButtonClick);

function onPrevButtonClick(e:MouseEvent) : void {

prevFrame();

txt_index.text = currentFrame + "/" + totalFrames;

}

function onNextButtonClick(e:MouseEvent) : void {

nextFrame();

txt_index.text = currentFrame + "/" + totalFrames;

}

Spring 2010 SCM-CityU 8

Page 9: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

Album Example

• Simple movie control– currentFrame – Current frame number– totalFrames – total frames = last frame number– stop() – stop (pause) the movie– play() – play the movie, starting from current frame– prevFrame() – goto the previous frame– nextFrame() – goto the next frame– gotoAndPlay(f) – goto frame f and play the movie– gotoAndStop(f) – goto frame f and stop the movie

Spring 2010 SCM-CityU 9

Page 10: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

Album Example

• Handle mouse click events– Add event listener

btn_prev.addEventListener(MouseEvent.CLICK, onPrevButtonClick);

btn_next.addEventListener(MouseEvent.CLICK, onNextButtonClick);

– Add event handlersfunction onPrevButtonClick(e:MouseEvent) : void {

prevFrame();

txt_index.text = currentFrame + "/" + totalFrames;

}

function onNextButtonClick(e:MouseEvent) : void {

nextFrame();

txt_index.text = currentFrame + "/" + totalFrames;

}

Spring 2010 SCM-CityU 10

Page 11: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

Album Example

• We can go from first photo to last photo• How about we press the previous button when we

at the first photo– No effect?– Goto the last photo? How to achieve this?

Spring 2010 SCM-CityU 11

Page 12: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

How About IF…

• If structure – only run the process B if the condition A is true

Spring 2010 SCM-CityU 12

Condition ACondition A Process BProcess Btrue

false

if

Page 13: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

How About IF…

if (condition) {// process

}Spring 2010 SCM-CityU 13

• Syntax – if statement– Start with “if” keyword– Condition put in parentheses– Process put in braces– Each pair of braces defines a block, which groups a set of statements together

Page 14: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

How About IF…

• Condition in AS is a condition expression– Has value true / false (boolean value)– Usually is a comparison expression– E.g. a < b, a >= c, a == b

• Comparison Operators– equal (==), not equal (!=)– Less than (<), greater than (>),– less than or equal to (<=), greater than or equal to (>=)Spring 2010 SCM-CityU 14

Page 15: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

How About IF…

var a:int = 1;

var b:int = 1;

if (a == b) {trace(“same”);

}

Spring 2010 SCM-CityU 15

• Examplesvar flag:Boolean = true;

if (flag == true) {trace(“yes”);

}

var flag:Boolean = true;

if (flag) {trace(“yes”);

}Output: “same”Output: “same” Output: “yes”Output: “yes”

Output: “yes”Output: “yes”

Page 16: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

How About IF… Album Examplefunction onPrevButtonClick(e:MouseEvent) : void {

if (currentFrame > 1) {

prevFrame();

}

if (currentFrame == 0) {

gotoAndStop(totalFrames);

}

txt_index.text = currentFrame + "/" + totalFrames;

}

function onNextButtonClick(e:MouseEvent) : void {

if (currentFrame < totalFrames) {

nextFrame();

}

if (currentFrame == totalFrames) {

gotoAndStop(1);

}

txt_index.text = currentFrame + "/" + totalFrames;

}

Spring 2010 SCM-CityU 16

Test the movie again after modified the code!

Page 17: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

How About IF…

• Sometime we need to combine conditions and test them in a single if statement

– E.g. age > 21 and gender == “male”

• Logical Operators– and (&&), or (||), not (!)

Spring 2010 SCM-CityU 17

Page 18: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

How About IF…

var a:int = 13;

var b:int = 12;

if (a>10 && b>10) {

trace(“>10”);

}

Spring 2010 SCM-CityU 18

• Examplesvar pass:Boolean = true;

var score = 50;

if (!flag || score<60) {trace(“fail”);

}

Output: “>10”Output: “>10” Output: “fail”Output: “fail”

Page 19: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

How About IF…

var a:int = 13;

var b:int = 12;

if (a>10 && b>10) {

trace(“>10”);

}

Spring 2010 SCM-CityU 19

• Examplesvar pass:Boolean = true;

var score = 50;

if (!flag || score<60) {trace(“fail”);

}

Output: “>10”Output: “>10” Output: “fail”Output: “fail”

Page 20: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

• If-else structure – if the condition A is true, run process B, otherwise run process C

Or ELSE…

Spring 2010 SCM-CityU 20

Condition ACondition A Process BProcess Btrue

false

if

Process CProcess C

Page 21: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

Or ELSE…

• Syntax – if-else statement– Start with “if” keyword– Condition put in parentheses– Process A put in braces after “if” keyword– “else” keyword put after Process A– Process B put after “else” keyword

Spring 2010 SCM-CityU 21

if (condition) {

// process A

} else {

// process B

}

Page 22: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

Or ELSE IF…

• Example

Spring 2010 SCM-CityU 22

var age:int = 20;

if (age >= 21) {

trace(“adult”);

} else {

trace(“child”);

}

Output: “child”Output: “child”

Page 23: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

Or ELSE IF… Album Examplefunction onPrevButtonClick(e:MouseEvent) : void {

if (currentFrame > 1) {

prevFrame();

} else {

gotoAndStop(totalFrames);

}

txt_index.text = currentFrame + "/" + totalFrames;

}

function onNextButtonClick(e:MouseEvent) : void {

if (currentFrame < totalFrames) {

nextFrame();

} else {

gotoAndStop(1);

}

txt_index.text = currentFrame + "/" + totalFrames;

}

Spring 2010 SCM-CityU 23

Test the movie again after modified the code!

Page 24: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

Or ELSE IF…

• We can use else-if structure to check multiple conditions

– Grouping two or more if-else statement together– Beware how “if” and “else” are matched

Spring 2010 SCM-CityU 24

Page 25: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

Or ELSE IF…

Spring 2010 SCM-CityU 25

Condition ACondition A Process CProcess Ctrue

false

if

Process CProcess C

Condition BCondition B

false

Process DProcess Delse-if

true

second if-elsesecond if-else statement statement

Page 26: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

Or ELSE IF…

• Syntax

Spring 2010 SCM-CityU 26

var age:int = 15;

if (age >= 21) {

trace(“adult”);

} else if (age > 12) {

trace(“teen”);

} else {

trace(“child”);

} Output: “teen”Output: “teen”

The code in bolded is the second

if-else statement

Page 27: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

Exercise

1. Use 4 buttons to move the Flash icon in the display area

2. Add checking so that the icon does not go outside the window

Spring 2010 SCM-CityU 27

Page 28: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

Write-once, Run-many

• Function– A portion of code within a larger program– Performs a special task– Relatively independent to other part of the program– Can be used many time

• Examples– prevFrame();– gotoAndStop();

Spring 2010 SCM-CityU 28

Page 29: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

Write-once, Run-many

• Function– can be called several times from several places in the

program– After calling a function, will “return” to the next

instruction after the “function call”

Spring 2010 SCM-CityU 29

function onPrevButtonClick(e:MouseEvent) : void {

prevFrame(); // call function prevFrame();

// after called prevFrame(), start to execute next statement

txt_index.text = currentFrame + "/" + totalFrames;

}

Page 30: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

Write-once, Run-many

• Surely, we call define our own function• Syntax

Spring 2010 SCM-CityU 30

function yourFunctionName(): void

{

// place your code here

// can use multiple statements

}

Page 31: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

Write-once, Run-many

• examples

Spring 2010 SCM-CityU 31

function printAtoE(): void

{

trace(“A”);

trace(“B”);

trace(“C”);

trace(“D”);

trace(“E”);

}

Page 32: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

Write-once, Run-many

• Functions often have parameters as input values– to define action of functions– more flexible control– Dynamic behaveior

• Syntax

Spring 2010 SCM-CityU 32

function name(parameter:type, parameter:type, …): void

{

// place your code here

// can use multiple statements

}

Page 33: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

Write-once, Run-many

• examples

Spring 2010 SCM-CityU 33

function addAndPrint(a:int, b:int): void

{

var sum:int = a + b;

trace(sum);

}

function displaceIcon(x:int, y:int): void

{

myIcon.x += x;

myIcon.y += y;

}

Page 34: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

Write-once, Run-many

• Functions can have return value as output values– to define result of functions– Similar to mathematic function, e.g. f(x) = 2x

– Syntax

Spring 2010 SCM-CityU 34

f(1) = 2f(2) = 4f(13) = 26…

function name(parameter:type, …): returnType

{

// place your code here

// remember to return a value after computation

return x;

}

Page 35: SM1205 Interactivity Topic 03: Flow Control Spring 2010SCM-CityU1.

Write-once, Run-many

• examples

Spring 2010 SCM-CityU 35

var x:int = 10;

var y:int = 7;

Var result:int = addThreeInt(x, y, 5);

function addThreeInt(a:int, b:int, c:int): int

{

var sum:int = a + b + c;

return sum;

}


Recommended