Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

@gilsones

Sprite dentro de Sprite. É isso mesmo?

Recommended Posts

Pessoal, criei meu primeiro arquivo .as e achei estranho, e fiquei com algumas dúvidas.

 

Minha idéia era estender o Sprite, e deixa-lo conforme minha necessidade, mas ele não aceitava minhas configurações. Não dava erro nenhum, mas não funcionava.

 

Tentei por exemplo configurar "buttonMode" como true por exemplo, mas não funciona...
tentei assim:

buttonMode = true; e this.buttonMode = true;

mas não funciona...

 

Então eu criei um Sprite com nome "button", configurei como eu precisava e dei um addChild, daí sim ficou como preciso.

 

Mas minhas dúvidas são:

 

- Dessa forma ficaria um Sprite dentro do outro? (2 Sprites)

- Teria como configurar direto na classe em questão, sem ter que criar o outro Sprite?

 

Quem puder tirar essas duvidas e dizer onde esou errando fico muito agradecido!

 

Abraço a todos!

 

CODIGO FUNCIONANDO!

package {

	import flash.display.Sprite;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.external.ExternalInterface;
	import flash.net.FileFilter;
	import flash.net.FileReference;
	import flash.net.FileReferenceList;

	public class jqFileReference extends Sprite {

		private var flashVars:Object;
		private var button:Sprite;
		private var fileReference:FileReference;

		public function jqFileReference() {
			stage.scaleMode = StageScaleMode.EXACT_FIT;

			flashVars = this.root.loaderInfo.parameters;

			button = new Sprite();
			button.graphics.beginFill( 0x000000, 1 );
			button.graphics.drawRect( 0, 0, 50, 50 );
			button.graphics.endFill();
			button.buttonMode = true;
			addChild( button );	

			switch( flashVars.method ) {
				case 'open':
					createOpen();
					break;
				case 'save':
					createSave();
					break;
			}
		}

		private function createOpen():void {
			button.addEventListener( MouseEvent.CLICK, browseHandler );

			var fileFilter:FileFilter = new FileFilter( flashVars.description, flashVars.extension );

			fileReference = new FileReference();
			fileReference.addEventListener( Event.SELECT, selectHandler );
			fileReference.addEventListener( Event.COMPLETE, completeHandler );

			function browseHandler( event:MouseEvent ):void {
				fileReference.browse( [ fileFilter ] );
			}

			function selectHandler( event:Event ):void {
				fileReference.load();
			}

			function completeHandler( event:Event ):void {
				ExternalInterface.call(	flashVars.callback, fileReference.data.toString() );
			}
		}

		private function createSave():void {
			button.addEventListener( MouseEvent.CLICK, saveHandler );

			fileReference = new FileReference();

			function saveHandler( event:MouseEvent ):void {
				var data:String = ExternalInterface.call( flashVars.callback );
				fileReference.save( data, flashVars.filename );
			}
		}

	}

}

 

NÃO FUNCIONA:


package {

	import flash.display.Sprite;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.external.ExternalInterface;
	import flash.net.FileFilter;
	import flash.net.FileReference;
	import flash.net.FileReferenceList;

	public class jqFileReference extends Sprite {

		private var flashVars:Object;
		private var fileReference:FileReference;

		public function jqFileReference() {
			stage.scaleMode = StageScaleMode.EXACT_FIT;

			flashVars = this.root.loaderInfo.parameters;

			this.graphics.beginFill( 0x000000, 1 );
			this.graphics.drawRect( 0, 0, 50, 50 );
			this.graphics.endFill();
			this.buttonMode = true;	

			switch( flashVars.method ) {
				case 'open':
					createOpen();
					break;
				case 'save':
					createSave();
					break;
			}
		}

		private function createOpen():void {
			this.addEventListener( MouseEvent.CLICK, browseHandler );

			var fileFilter:FileFilter = new FileFilter( flashVars.description, flashVars.extension );

			fileReference = new FileReference();
			fileReference.addEventListener( Event.SELECT, selectHandler );
			fileReference.addEventListener( Event.COMPLETE, completeHandler );

			function browseHandler( event:MouseEvent ):void {
				fileReference.browse( [ fileFilter ] );
			}

			function selectHandler( event:Event ):void {
				fileReference.load();
			}

			function completeHandler( event:Event ):void {
				ExternalInterface.call(	flashVars.callback, fileReference.data.toString() );
			}
		}

		private function createSave():void {
			this.addEventListener( MouseEvent.CLICK, saveHandler );

			fileReference = new FileReference();

			function saveHandler( event:MouseEvent ):void {
				var data:String = ExternalInterface.call( flashVars.callback );
				fileReference.save( data, flashVars.filename );
			}
		}

	}

}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema está aqui: this.root.loaderInfo.parameters

 

Quando você cria a instância da classe, óbvio, vai ser nulo! Passe esses dados por parâmetro na classe...

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema está aqui: this.root.loaderInfo.parameters

 

Quando você cria a instância da classe, óbvio, vai ser nulo! Passe esses dados por parâmetro na classe...

 

[]'s

 

Na verdade acho que não tem haver com isso, pois eu coloquei esse objeto manualmente para testar e não funciona...

 

o engraçado é que até o quanto eu executo meu swf, ele aparece o quadradro preto, ou seja, o beginFill e o drawRect funcionam, mas o buttonMode não funciona (não aparece o cursor Hand), e se eu colocar o evento CLICK, também não acontece nada quando clico.

 

flashVars manual para testes:

var flashVars:Object = new Object();
flashVars.method = 'open';
flashVars.description = 'EAT Boletim (*.eatb)';
flashVars.extension = '*.eatb';
flashVars.filename = 'Teste.eatb';
flashVars.callback = 'Teste';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vai por mim, passa os seus dados por parâmetro:

var flashVars:Object = new Object();
flashVars.method = 'open';
flashVars.description = 'EAT Boletim (*.eatb)';
flashVars.extension = '*.eatb';
flashVars.filename = 'Teste.eatb';
flashVars.callback = 'Teste';

var teste:jqFileReference = new jqFileReference( flashVars );
addChild( teste );

Obs.: Remova também a referência do seu stage no código que vai funcionar

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.