DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012...

32
DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0

Transcript of DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012...

Page 1: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

DESIGN E

COMUNICAÇÃO

MULTIMÉDIA

2011 / 2012

FORMADOR

Gonçalo Miguel

MÓDULO

25. Introdução ao

ActionScript 3.0

Page 2: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

25. Introdução ao ActionScript 3.0

Módulo 25 – 3ª Sessão

Conceitos de Programação orientada a objectos Recorrendo ao ActionScript 3.0

Novos Conceitos : classes, objectos ,método construtor, métodos set get, métodos, instâncias, extensão de classes, polimorfismo,…

Material: Slides PowerPoint

Page 3: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

Programação orientada a objectos em ActionScript 3.0

25. Introdução ao ActionScript 3.0

Programação orientada a objectos

Programação orientada a objectos é uma maneira de organizar o código de um programa, agrupando-o em objectos, que são os elementos individuais que

incluem informação ( propriedades com valores ) e comportamentos.

• Definição de classes

• Criação de propriedades, métodos de obtenção e definição de acessor (Set / Get)

• Controle do acesso a classes, propriedades, métodos e acessores

• Criação de propriedades e métodos estáticos

Tarefas típicas na programação orientada a objectos

Page 4: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

25. Introdução ao ActionScript 3.0

package com.example.quickstart {import flash.display.MovieClip; public class Greeter { // ------- Método Construtor ------- public function Greeter(initialName:String = "") { name = initialName;} // ------- Propriedades ------- public var name:String; // ------- Métodos ------- public function sayHello():String { return “Hi”;} } }

Definição da Classe

Page 5: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

25. Introdução ao ActionScript 3.0

import com.example.quickstart.Greeter;var michaelGreeter:Greeter = new Greeter("Michael");michaelGreeter.name = "Mike" trace(michaelGreeter.sayHello())

Para usarmos a classe definida anteriormente, temos de importar, colocando o package e o nome da Classe.

Utilização da Classe

Page 6: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

Programação orientada a objectos em ActionScript 3.0

25. Introdução ao ActionScript 3.0

Uma classe é uma representação abstracta de um objecto

Classes

A definição da estrutura e o comportamento de objectos de um determinado tipo

Page 7: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

Programação orientada a objectos em ActionScript 3.0

25. Introdução ao ActionScript 3.0

Um objecto é uma instância de uma determinada Classe

Objecto

A definição da estrutura e o comportamento de objectos de um determinado tipo

Page 8: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

Programação orientada a objectos em ActionScript 3.0

25. Introdução ao ActionScript 3.0

Classe

Métodos

Propriedades

Objecto

Propriedades: valor

Page 9: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

Programação orientada a objectos em ActionScript 3.0

25. Introdução ao ActionScript 3.0

Classe Carro

atestar()deQuemÉ()matricula()Idade()

combustiveldepositodonomatriculaanoMain Class

Timeline CodeExternal AS

DocumentClass

API da classe

Page 10: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

Programação orientada a objectos em ActionScript 3.0

25. Introdução ao ActionScript 3.0

carro1

carro2

Combustivel: 300deposito : 900dono : “Manuel”matricula : “bo-gi-21”ano : 2001

Combustivel: 100deposito : 210dono : “Miriam”matricula : “bi-de-33”ano : 2001

Carro

atestar()deQuemÉ()matricula()Idade()

combustiveldepositodonomatriculaano

Page 11: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

Programação orientada a objectos em ActionScript 3.0

25. Introdução ao ActionScript 3.0

//Declaração de packagepackage transportes{

//Declaração de Classe public class Carro {

//Declaração das propriedadesvar combustivel:Number;

//Método Construtor – Para construir um elemento do nosso novo tipo public function Carro() {

} //Declaração dos métodos //atestar, andar, contaKm, media, etc…. }}

Page 12: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

Programação orientada a objectos em ActionScript 3.0

Método Construtor

25. Introdução ao ActionScript 3.0

Page 13: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

Programação orientada a objectos em ActionScript 3.0

25. Introdução ao ActionScript 3.0

• O método construtor é o método que nos permite instanciar um objecto da classe, e é o único método que tem de existir em todas as classes.

• O método construtor tem de ser obrigatoriamente público ( Ver controlo de acesso)

• O método construtor tem o mesmo nome da classe e não tem valor de retorno, apesar de retornar sempre um objecto da classe.

• Podemos ter vários métodos construtores que sejam instanciados com diferentes argumentos, mas sempre com o nome da classe.

Caso do Array:

var meuArray:Array = new Array();

var meuArray:Array = new Array(12,23);

Page 14: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

25. Introdução ao ActionScript 3.0

FLAMain.as Stage MovieClip

MouseEventKeyEvent

FiguraGeometricaKeyboardEvent  MovieClip

Quadrado

Classes

Triangulo

Package:flash.events Package:flash.display Package:com.gonmiguel.figuras

Page 15: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

Programação orientada a objectos em ActionScript 3.0

25. Introdução ao ActionScript 3.0

CONTROLO DE ACESSO

Page 16: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

Programação orientada a objectos em ActionScript 3.0

25. Introdução ao ActionScript 3.0

Controlo de Acesso: Variáveis e funções

keyword Acesso

public Disponivel para todas as chamadas

private Só disponivel para a classe que a declara

protectedDisponivel para a classe que a declara e para todas as subclasses

internal Disponivel para todas as classes do mesmo package

Page 17: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

Programação orientada a objectos em ActionScript 3.0

25. Introdução ao ActionScript 3.0

Controlo de Acesso: Exemplos de utilização

private function drawTriangle():void {…}

private var variavelPrivada:Number ;

public function Aviao():void{…}

Page 18: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

Programação orientada a objectos em ActionScript 3.0

Métodos Set e Get

25. Introdução ao ActionScript 3.0

Page 19: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

Programação orientada a objectos em ActionScript 3.0

25. Introdução ao ActionScript 3.0

As propriedades das classes não devem ser acedidas directamente por outras classes.

Devemos então definir as nossas variáveis como private, e devemos implementar uma função para aceder à propriedade (Getter – de Get) e outra função para associar um valor a uma propriedade (Setter – de Set).

package Transporte{  public class Carro {

private var combustivel:Number;

public function get combustivel():Number {return combustivel;

}public function set combustivel(comb:Number):void {

combustivel = comb;} …

Page 20: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

Programação orientada a objectos em ActionScript 3.0

25. Introdução ao ActionScript 3.0

PACKAGES

Page 21: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

Programação orientada a objectos em ActionScript 3.0

25. Introdução ao ActionScript 3.0

Package: Conceito

Um package corresponde a uma estrutura de classes actionscript.

Uma classe que instancie um objecto, não é escrita nas actions do fla.

É escrita num ficheiro próprio de extensão .as (actionscript) e tem obrigatoriamente de estar dentro de um package.

Se o ficheiro “as” estiver na mesma directoria do .fla, deverá ser declarado sem nome.

Caso esteja dentro de uma directoria, deverá ser declarado com o nome da directoria.

Page 22: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

Programação orientada a objectos em ActionScript 3.0

25. Introdução ao ActionScript 3.0

Package Transportes {public class

Aviao {

} }

Definição básica da classe Aviao.Indica-nos que para usarmos a classe Aviao , teremos de importar o package Transportes.

No nosso ficheiro de actionscript principal, importaríamos da seguinte maneira:

import Transportes.Aviao;

Page 23: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

Programação orientada a objectos em ActionScript 3.0

25. Introdução ao ActionScript 3.0

Package: Declaração

Exemplos:a.)Esta classe está definida na mesma directoria do “.fla”

package { class Button { .. } }

b.)Esta classe está definida dentro de uma directoria controls, que por sua vez está dentro de uma directoria mx

package mx.controls { class Button { .. } }

import Button;

import mx.controls.Button;

Page 24: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

Programação orientada a objectos em ActionScript 3.0

25. Introdução ao ActionScript 3.0

Extensão e Hierarquia de classes

Page 25: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

Programação orientada a objectos em ActionScript 3.0

25. Introdução ao ActionScript 3.0

Extensão e Hierarquia de classeshttp://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/MovieClip.html

Package flash.display

Class public dynamic class MovieClip

Inheritance MovieClip  Sprite  DisplayObjectContainer  InteractiveObject  DisplayObject  EventDispatcher  Object

Subclasses FlexMovieClip, GravityBootstrap, LivePreviewParent, SystemManager, UIMovieClip, WindowedSystemManager

Page 26: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

Programação orientada a objectos em ActionScript 3.0

25. Introdução ao ActionScript 3.0

Extensão e Hierarquia de classesUm objecto da classe MovieClip é também da classe Sprite, DisplayObjectContainer,

InteractiveObject , DisplayObject, EventDispatcher e Object

Para criarmos uma classe que seja herdada de outra, temos de utilizar a palavra extends como no exemplo que se segue.

Uma classe Aviao que estende a classe MovieClip ( E tem a sua própria timeline…)

Package Transportes {public class Aviao extends

MovieClip {

} }

Page 27: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

Programação orientada a objectos em ActionScript 3.0

25. Introdução ao ActionScript 3.0

Polimorfismo

O polimorfismo consiste em re-escrever os métodos de uma classe da qual foi extendida.

Utiliza-se a palavra dedicada override para sobrepor a função local à função existente na Super Classe.

Page 28: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

Programação orientada a objectos em ActionScript 3.0

25. Introdução ao ActionScript 3.0

CLASSE DOCUMENTO

Page 29: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

Programação orientada a objectos em ActionScript 3.0

25. Introdução ao ActionScript 3.0

É a classe responsável por controlar a timeline principal e o palco.

Para definir esta classe é necessário:

1. Definir um package;2. Importar a classe MovieClip;3. Extender a classe Movieclip;4. Definir um construtor para a classe;

package{

import flash.display.MovieClip;

public class Main extends MovieClip{

public function Main(){ }

}}

A Classe do Documento (Document Class) é a classe principal de um projecto em flash.

Document Class – Main Class

Page 30: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

Programação orientada a objectos em ActionScript 3.0

25. Introdução ao ActionScript 3.0

Document Class

1. Cria um novo Documento Flash.

2. Clica no lápis , para definir a classe do documento

Page 31: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

Programação orientada a objectos em ActionScript 3.0

25. Introdução ao ActionScript 3.0

Document Class

3. Escreve o seguinte código no ficheiro aberto e grava-o com o nome Main.as

package{

import flash.display.MovieClip;

public class Main extends MovieClip{

public function Main(){

trace( “Script externo" );}

}}

Page 32: DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 DESIGN E COMUNICAÇÃO MULTIMÉDIA 2011 / 2012 FORMADOR Gonçalo Miguel MÓDULO 25. Introdução ao ActionScript 3.0.

Programação orientada a objectos em ActionScript 3.0

25. Introdução ao ActionScript 3.0

Referências : Programação orientada a objectos em AS3

Capitulo 5 - Adobe Systems: Programação do Adobe ActionScript 3.0 http://help.adobe.com/pt_BR/ActionScript/3.0_ProgrammingAS3/flash_as3_programming.pdf

ELST,Peter ;JACOBS, Sas; YARD, Todd; Object-Oriented ActionScript 3.0 ; friendsof:Apress ; 2007

Object-oriented programming by Michelle Yaiserhttp://www.adobe.com/devnet/actionscript/learning.html

Santos, Máriohttp://blog.msdevstudio.net/2008/10/30/tutorial-classes-as3-estrutura-e-compreensao/