• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

asworm

Classes

11 mensagens neste tópico

boas eu tenho esta classe....

Main.as

o codigo vem asseguir

package 
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.media.Camera;
import flash.media.Video;
import flash.display.Bitmap;
import flash.display.BitmapData;
import com.adobe.images.JPGEncoder;
import flash.display.BlendMode;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.utils.ByteArray;
import flash.net.FileReference;



/**
 * ...
 * @author srs
 */
public class Main extends Sprite 
{

	private var camera:Camera;
	private var video:Video;
	private var container:Sprite;

	private var flat:BitmapData;
	private var flatHolder:Sprite;
	private var flatBM:Bitmap;
	private var lastx:Number;
	private var lasty:Number;
	private var rate:Number;
	private var thickness:Number;
	private var clr:uint;
	private static var jpgEncoder:JPGEncoder = new JPGEncoder();


	public function Main():void 
	{
		if (stage) init();
		else addEventListener(Event.ADDED_TO_STAGE, init);
	}

	private function init(e:Event = null):void 
	{
		removeEventListener(Event.ADDED_TO_STAGE, init);
		// entry point
		camera = Camera.getCamera();
		video = new Video();
		video.attachCamera(camera);
		container = new Sprite();
		addChild(container);
		container.mouseChildren = false;
		container.addChild(video);
		flatHolder = new Sprite();
		container.addChild(flatHolder);

		flat = new BitmapData(video.width, video.height, true, 0x00000000);
		flatBM = new Bitmap(flat);
		flatHolder.addChild(flatBM);

		thickness = 0.5;
		clr = 0xffffff;


		var	exportBTN:Sprite = new Sprite();
		var exportLabel:TextField = new TextField();
		exportLabel.autoSize = TextFieldAutoSize.LEFT;
		exportLabel.text = "Export";
		exportLabel.selectable = false;
		exportLabel.mouseEnabled = false;
		exportBTN.graphics.lineStyle(0.1, 0x000000);
		exportBTN.graphics.beginFill(0x888888);
		exportBTN.graphics.drawRoundRect(0, 0, exportLabel.width, exportLabel.height, 4, 4);
		exportBTN.graphics.endFill();
		exportBTN.useHandCursor = true;
		exportBTN.addEventListener(MouseEvent.CLICK, export);
		exportBTN.addChild(exportLabel);
		exportBTN.y = video.height + 5;

		addChild(exportBTN);

		var	clearBTN:Sprite = new Sprite();
		var clearLabel:TextField = new TextField();
		clearLabel.autoSize = TextFieldAutoSize.LEFT;
		clearLabel.text = "clear";
		clearLabel.selectable = false;
		clearLabel.mouseEnabled = false;
		clearBTN.graphics.lineStyle(0.1, 0x000000);
		clearBTN.graphics.beginFill(0x888888);
		clearBTN.graphics.drawRoundRect(0, 0, clearLabel.width, clearLabel.height, 4, 4);
		clearBTN.graphics.endFill();
		clearBTN.useHandCursor = true;
		clearBTN.addEventListener(MouseEvent.CLICK, clear);
		clearBTN.addChild(clearLabel);
		clearBTN.y = video.height + 5;
		clearBTN.x = exportBTN.x + exportBTN.width + 5;

		addChild(clearBTN);

		addEventListener(MouseEvent.MOUSE_DOWN, mdown);
	}

	private function mdown(event:MouseEvent):void
	{
		trace("mdown");
		rate = stage.frameRate;
		stage.frameRate = 60;
		lastx = mouseX;
		lasty = mouseY;
		flatHolder.graphics.moveTo(lastx, lasty);
		event.currentTarget.removeEventListener(MouseEvent.MOUSE_DOWN, mdown);
		event.currentTarget.addEventListener(MouseEvent.MOUSE_MOVE, mmove);
		event.currentTarget.addEventListener(MouseEvent.MOUSE_UP, mup);
	}

	private function mmove(event:MouseEvent):void
	{
		//capture stroke, flatten
		flatHolder.graphics.clear();
		flatHolder.graphics.moveTo(lastx, lasty);
		flatHolder.graphics.lineStyle(thickness, clr);
		flatHolder.graphics.lineTo(mouseX, mouseY);
		flat.draw(flatHolder, null, null, BlendMode.NORMAL);
		lastx = mouseX;
		lasty = mouseY;
	}

	private function mup(event:MouseEvent):void
	{
		stage.frameRate = rate;
		event.currentTarget.removeEventListener(MouseEvent.MOUSE_UP, mup);
		event.currentTarget.removeEventListener(MouseEvent.MOUSE_MOVE, mmove);
		event.currentTarget.addEventListener(MouseEvent.MOUSE_DOWN, mdown);
	}

	private function export(e:MouseEvent):void {
		//var bd:BitmapData = new BitmapData(container.width, container.height);
		//bd.draw(container);
		//var data:ByteArray = jpgEncoder.encode(bd);
		//var file:FileReference = new FileReference();
		//file.save(data, '.jpg');
	}

	private function clear(e:MouseEvent):void {
		flatHolder.graphics.clear();
		flat.fillRect(flat.rect, 0x00000000);
	}

}

}

e quando eu crio um novo projecto vou ha timeline  e na primeira frame vou as actions e colo la este codigo... o problema é que diz que "packages cannot be nested"

o que é que eu estou a fazer mal?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

acho q tens q meter essas classes mesmo num ficheiro de ActionScript

e chamo-lo na timeline

tipo

colas o codigo no notepad++

e guardas-lo com a extensão .as

acho q e assim

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

experimenta o q te disse

nao sei se funciona

mas e a mesma coisa q usei no meu projecto de PHP

sei q AS e PHp nao e a mm coisa

mas e parecido

tive q user um ficheiro com os includes e as classes a parte

agora como se chama o file para a timeline ja nao sei

ou entao esse codigo pode tar em ActionScript 3.0

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

yoo!

nao podes meter uma class na timeLine do flash... :)

cria um file de actionscript e guarda-o com o nome de Main.

cria um file de .fla e guarda-o na mesma pasta onde tens o "Main" gravado. neste mesmo file (fla), na tab de Properties na secção Document class, escreve o nome da class (Main).

Assim ficas com o teu documento de .fla associado á class Main.

Até nem faz muito sentido estares a escrever uma class na timeline do flash... :)

Espero que ajude

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu ja tinha feito isso mas depois dá erros noutra classe...

eu fui buscar um project aqui  http://board.flashkit.com/board/showthread.php?t=796718

e o swf funciona... so que eu precisava de alterar umas cenas e queria voltar a compilar o projecto

mas ao que parece isto da erros por todo o lado

e depois o unico ficheiro de projecto é um tal de "camsketch.as3proj" que nao sei que programa o abre porque ja pesquisei e nao encontrei nada...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ja resolvi... o problema estava numa classe que era chamada na classe "Main", a "JPGencoder" ... e essa classe é que estava com bastantes erros... e fui sacar de novo... ja funca o meu problema agora é outro...

file.save()...

isto abre uma dialog box do windows para gravar o ficheiro... nao da para o gravar sem aparecer esta dialog box?

do genero especificar o caminho que quero no codigo source e ele gravar sempre para la sem que apareca a dialog box...???

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

hmmm.

o flash por si so nao deixa gravar nada no disco sem se usar o metodo que estas a usar (file:FileReference). assim sendo ele ira semp+re usar o dialogbox do windows :)

no entatno podes converter essa aplicação para AIR. e ai sim, iras conseguir gravar para onde quiseres sem teres de usar uma dialogbox.

Nao tenho 100% de certeza do que acabei de dizer, se alguém souber de outro metodo para dar a volta à situação... :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

se usar esse metodo qual o codigo que terei de usar?

preciso que o flash trabalhe em browser... com essa ferramenta "Air" ainda tenho essa funcionalidade?

eu tive a pensar em usar o php para gravar no servidor... que é essa a funcionalidade da aplicaçao que estou a fazer...

mas da-me um erro quando junto o codigo...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois, se usares AIR, nao podes meter isso num browser.

Usa antes o PHP. sem duvida que isso sera uma boa alternativa.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora