Jump to content
Sign in to follow this  
asworm

Classes

Recommended Posts

asworm

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?


Got it?

Share this post


Link to post
Share on other sites
IvanGS

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

Share this post


Link to post
Share on other sites
IvanGS

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

Share this post


Link to post
Share on other sites
coxosclassic

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


Cumps,

cc

Share this post


Link to post
Share on other sites
asworm

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...


Got it?

Share this post


Link to post
Share on other sites
asworm

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...???


Got it?

Share this post


Link to post
Share on other sites
coxosclassic

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... :)


Cumps,

cc

Share this post


Link to post
Share on other sites
asworm

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...


Got it?

Share this post


Link to post
Share on other sites
coxosclassic

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

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


Cumps,

cc

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.