www.mutationevent.com

Articles taggés avec ‘actionscript’

Injection de javascript depuis actionscript – part2

Mercredi 9 décembre 2009

Dans un précédent article, j'ai mentionné comment injecter un fichier Javascript à l'intérieur d'un fichier swf en utilisant une variable de type XML et de définir le contenu Javascript a l'intérieur, Injection du Javascript depuis Actionscript.

Dans se deuxième exemple nous allons utiliser les metadata.

code:

package {
 
import flash.display.Sprite;
 
import flash.external.ExternalInterface;
 
public class embedding_js_into_swf_part2 extends Sprite
 
{
 
[Embed(source="assets/helloworld.js", mimeType="application/octet-stream")]
 
private static const HelloWordJS:Class;
 
public function embedding_js_into_swf_part2()
 
{
 
if (ExternalInterface.available)
 
{
 
ExternalInterface.call("eval", new HelloWordJS().toString());
 
// call hello function from js file
 
ExternalInterface.call("hello");
 
}
 
}
 
}
 
}

Télécharger l'exemple : jsInjection_part2 (12)

StorageVolumeInfo on adobe air 2 beta

Mercredi 18 novembre 2009

Après une bonne attente pour la sortie de la version 2 d'Adobe Air, voici un premier exemple de l'utilisation de la nouvelle Class (StorageVolumeInfo) qui permet de détecter l'insertion d'un volume externe (usb, camera, ...).

package
{
    import flash.display.Sprite;
    import flash.events.StorageVolumeChangeEvent;
    import flash.filesystem.StorageVolume;
    import flash.filesystem.StorageVolumeInfo;
 
    public class Main extends Sprite
    {
		private var volumeIcon:icon;
		private var isMounted:Boolean = false;
 
        public function Main()
        {
 
            StorageVolumeInfo.storageVolumeInfo.addEventListener(StorageVolumeChangeEvent.STORAGE_VOLUME_MOUNT, mountEventHandler);
            StorageVolumeInfo.storageVolumeInfo.addEventListener(StorageVolumeChangeEvent.STORAGE_VOLUME_UNMOUNT, unmountEventHandler);
        }
        public function mountEventHandler(event:StorageVolumeChangeEvent):void
        {
            var volume:StorageVolume = event.storageVolume;
            trace("VOLUME MOUNTED:");
 
			var info:String = "nativePath:" + event.rootDirectory.nativePath + "\n";
			info += "fileSystemType:" + volume.fileSystemType + "\n";
			info += "isRemovable:" + volume.isRemovable + "\n";
			info += "isWritable:" + volume.isWritable + "\n";
			info += "name:" + volume.name;
 
			volumeIcon = new icon();
			volumeIcon.information.text = info;
			addChild(volumeIcon);
			isMounted = true;
        }
        public function unmountEventHandler(event:StorageVolumeChangeEvent):void
        {
            trace("VOLUME UNMOUNTED:");
 
			if(isMounted)
			{
				removeChild(volumeIcon);
				isMounted = false;
			}
        }
    }
}
StorageVolumeInfo exemple (18)

Injection du Javascript depuis Actionscript

Samedi 3 octobre 2009

Pour injecter du code Javascript dans une page web depuis Actionscript on peut utiliser deux méthodes mais qui presque similaire :

La première consiste a injecter le code javascript comme un objet XML et la deuxième consiste a integrer un fichier js en utilisant les metadata.

Nous allons voir dans cette partie la version XML et dans une deuxième partie la méthode embed :

  1. package com.mutationevent
  2. {
  3. import flash.display.Sprite
  4. import flash.external.ExternalInterface
  5. import flash.events.MouseEvent;
  6.  
  7. public class Inject extends Sprite
  8. {
  9. public function Inject()
  10. {
  11. var js:XML = <script>
  12. <![CDATA[
  13. function ()
  14. {
  15. js = {};
  16. js.showAlert = function()
  17. {
  18. alert("messagae");
  19. }
  20. }
  21. ]]>
  22. </script>
  23.  
  24. // embed the JavaScript to the page
  25. ExternalInterface.call(js);
  26.  
  27. myButton.addEventListener(MouseEvent.CLICK, myButtonHandler);
  28. }
  29.  
  30. private function myButtonHandler(evt:MouseEvent):void
  31. {
  32. ExternalInterface.call("js.showAlert");
  33. }
  34. }
  35. }

et pour appeler la fonction showAlert :

  1. ExternalInterface.call("js.showAlert");

Téléchargez l'exemple : jsInjection (38)

Astuce Flex : -keep-generated-actionscript

Jeudi 6 août 2009

Lorsque vous compiler votre application mxml, tout le code mxml écrit et converti en premier en actionscript puis ce code actionscript est compiler a interieur du SWF. vous pouvez voir ce code actionscript généré pour comprendre un peu mieux le fonctionnement du framework Flex

flex-complier-window

Pour mettre en place cet argument, cliquer sur le bouton droit dans votre projet puis sélectionner propriétés en suit aller Flex Compiler et dans le champ Additional compiler arguments taper -keep-generated-actionscript ou -keep (-keep=true est juste aussi)... Maintenant recompiler votre projet et vous allez voir apparaitre un dossier nommé "generated" regroupant tout le code actionscript de votre projet.

  • Archives

  • Catégories

  • @mutationevent