@gilsones 4 Denunciar post Postado Janeiro 23, 2014 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
DesenvolvedorRoger 50 Denunciar post Postado Janeiro 23, 2014 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
@gilsones 4 Denunciar post Postado Janeiro 23, 2014 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
DesenvolvedorRoger 50 Denunciar post Postado Janeiro 23, 2014 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