Jump to content
(Open Beta) HyperSpin 2 is now available for everyone ×

How to compile Actionscript 3 to have a hyperspin swf compliant file?


Recommended Posts

Posted

Hi guys,

I'm trying top compile an Actionscript 3 source to create a hyperspin compliant swf file.

To do this, I'd installed Apache Flex sdk (Apache Flex 4.16.0 FP11.9 AIR3.9 en_US) + FlashDevelop.

 

I wrote this little source to test (it's just displaying a blank text on a uggly blue background...) : 

package
{
   import flash.display.Sprite;
   import flash.events.Event;
   import flash.text.TextField;
   import flash.text.TextFormat;
   
   /**
    * ...
    * @author vincent
    */
   public class Main extends Sprite 
   {
      
      public function Main() 
      {
         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
         
         // Mario Strikers Charged Football 
         this.addText("Mario Strikers Charged Football", "calibri", 22, "0xffffff", true, false, false, true, true, false, 20, 170, 200, 30);
         
      }
            
      /**
       * Ajout d'un objet TextField dans la scène
       * @param   text
       * @param   font
       * @param   size
       * @param   color
       * @param   bold
       * @param   italic
       * @param   underline
       * @param   wordWrap
       * @param   multiline
       * @param   embedFont
       * @param   x
       * @param   y
       * @param   width
       * @param   height
       * @return
       */
      private function addText(text:String, font:String, size:Number, color:String, bold:Boolean, italic:Boolean, underline:Boolean, wordWrap:Boolean, multiline:Boolean, embedFont:Boolean, x:Number, y:Number, width:Number, height:Number):TextField
      {   
         var t:TextField = new TextField();
         var tf:TextFormat = new TextFormat();
         
         t.x = x;
         t.y = y;
         t.width = width;
         t.height = height;
         t.wordWrap = wordWrap;
         t.multiline = multiline;
         t.autoSize = "left";
         t.text = text;
         t.embedFonts = embedFont;
         
         tf.font = font;
         tf.size = size;
         tf.color = color;
         tf.bold = bold;   // textF1.bold = attributes[3].toLowerCase(  ) == "true";
         tf.italic = italic;
         tf.underline = underline;
         
         // Apply "setTextFormat()" to the text field , with the "textFormat" instance as argument
         t.setTextFormat(tf);
         // Apply "addChild()" to add the text in the Flash presentation
         this.addChild(t);
         
         return t;
      }
   }

}

 

I'd read on another post that I'd to compile my as3 with theses parms :

714919FD1.png

 

When I test my BackgroundTest1.swf with Velocity9, my swf seem to have been compiled in flash 10.3 :

500643Velo1.png

 

When I test my swf in internet explorer, no problem, everything seems good too.

 

But when I use my swf (renamed Background.swf) in a hyperspin system default, everythings goes wrong (I'm using Hyperspin 1.4 + last RocketLauncher version).

Instead of displaying my swf in the background, hyperspin displays the HS intro video... I really don't understand why?? :unknown:

Any ideas? I'm really stuck....

Posted

Ok, I found 2 interesting posts by dark13 :

- The first one says that swf must be created with adobe flash professional + actionscript3 :

http://www.hyperspin-fe.com/forums/topic/15372-swf-woes-in-my-themes/#comment-211508

- The second one is the Dark13's hyperspin total conversion theme (aeon nox13) :

http://www.hyperspin-fe.com/forums/topic/5401-aeon-nox13-wip/#comment-103759

 

I decompiled dark13 swf file to understand where was my mistake. So :

- Dark13 project is made with .fla files -> compiled with flash.

- My project is direct as3 files compiled with flex. -> This not work!

 

I read dark13 sources and now I understand better. 

Thanks @dark13 for your great work with as3 on aeon nox, you have already made a big part of what I wanted to do also!!

 

Posted

Some suggestions:

1- If you use tweens to scroll text use global variables for tweens, if the tween is created inside a function the garbage collector will remove it even if it's running.

2- Close all listeners or they will create memory leaking. If you are not using keys in the theme just create a generic key listener to close everything when you press a key. You can also use this parser to read HS settings and automatically get the keys used in HS to close listners only when a specific keys is pressed (the code that reads the name of the file is commented to debug the thing, so remove also the "trace" command and comment the loader with the direct link to HS folder).
 

	var myFileName:String;
var HSpath:String ;
var mypath:String ;
var SystemName:String ;
var HSsettingLoader:URLLoader = new URLLoader();
var SettingsTXT:Array ;
var VariablesAssigner:Array ;
var VariablesAssigner2:Array ;
var HSStart:Number ;
var HSExit:Number ;
var HSUp:Number ;
var HSDown:Number ;
var HSSkipUp:Number ;
var HSSkipDown:Number ;
var HSSkipUpNumber:Number ;
var HSSkipDownNumber:Number ;
var HSHyperSpin:Number ;
var HSGenre:Number ;
var HSFavorites: Number
	var SettingsTXT2:Array ;
var VariablesAssigner3:Array ;
var VariablesAssigner4:Array ;
var HSStart2:Number ;
var HSExit2:Number ;
var HSUp2:Number ;
var HSDown2:Number ;
var HSSkipUp2:Number ;
var HSSkipDown2:Number ;
var HSSkipUpNumber2:Number ;
var HSSkipDownNumber2:Number ;
var HSHyperSpin2:Number ;
var HSGenre2:Number ;
var HSFavorites2: Number
	/*myFileName = this.loaderInfo.url;
mypath = myFileName.split(String.fromCharCode(92)).join("/");
SettingArray = mypath.split("/Media/");
HSpath = myFileNameArray3[0] ;
*/
	
HSsettingLoader.addEventListener(Event.COMPLETE, onLoadedHSsetting);
	function onLoadedHSsetting(e:Event):void {
SettingsTXT = e.target.data.split("[P1 Controls]") ;
VariablesAssigner = SettingsTXT[1].split("[P2 Controls]");
VariablesAssigner2 = VariablesAssigner[0].split("\r\n").join("").split("Start=").join("&").split("Exit=").join("&").split("SkipUpNumber=").join("&").split("SkipDownNumber=").join("&").split("SkipDown=").join("&").split("SkipUp=").join("&").split("Up=").join("&").split("Down=").join("&").split("HyperSpin=").join("&").split("Genre=").join("&").split("Favorites=").join("&").split("&") ;
    
HSStart = VariablesAssigner2[1];
HSExit = VariablesAssigner2[2];
HSUp = VariablesAssigner2[3] ;
HSDown = VariablesAssigner2[4] ;
HSSkipUp = VariablesAssigner2[5] ;
HSSkipDown = VariablesAssigner2[6] ;
HSSkipUpNumber = VariablesAssigner2[7] ;
HSSkipDownNumber = VariablesAssigner2[8] ;
HSHyperSpin = VariablesAssigner2[9] ;
HSGenre = VariablesAssigner2[10] ;
HSFavorites = VariablesAssigner2[11] ;
    
SettingsTXT2 = e.target.data.split("[P2 Controls]")    
VariablesAssigner3 = SettingsTXT2[1].split("[P1 Joystick]"); ;
VariablesAssigner4 = VariablesAssigner3[0].split("\r\n").join("").split("Start=").join("&").split("Exit=").join("&").split("SkipUpNumber=").join("&").split("SkipDownNumber=").join("&").split("SkipDown=").join("&").split("SkipUp=").join("&").split("Up=").join("&").split("Down=").join("&").split("HyperSpin=").join("&").split("Genre=").join("&").split("Favorites=").join("&").split("&") ;
    
HSStart2 = VariablesAssigner4[1];
HSExit2 = VariablesAssigner4[2];
HSUp2 = VariablesAssigner4[3] ;
HSDown2 = VariablesAssigner4[4] ;
HSSkipUp2 = VariablesAssigner4[5] ;
HSSkipDown2 = VariablesAssigner4[6] ;
HSSkipUpNumber2 = VariablesAssigner4[7] ;
HSSkipDownNumber2 = VariablesAssigner4[8] ;
HSHyperSpin2 = VariablesAssigner4[9] ;
HSGenre2 = VariablesAssigner4[10] ;
HSFavorites2 = VariablesAssigner4[11] ;    
	    
trace(HSStart, HSExit, HSUp, HSDown, HSSkipUp, HSSkipDown, HSSkipUpNumber, HSSkipDownNumber, HSHyperSpin, HSGenre, HSFavorites, "adda", HSStart2, HSExit2, HSUp2, HSDown2, HSSkipUp2, HSSkipDown2, HSSkipUpNumber2, HSSkipDownNumber2, HSHyperSpin2, HSGenre2, HSFavorites2);
	}
	 
	stage.addEventListener(KeyboardEvent.KEY_DOWN, myKeyDown);
	function myKeyDown(e:KeyboardEvent):void {
   // if (e.keyCode == Keyboard.ENTER) {
if (e.keyCode == HSUp) {    
 trace("ok")
     }
 }
 
 // HSsettingLoader.load(new URLRequest(HSpath + "/Settings/Settings.ini");
HSsettingLoader.load(new URLRequest("W:/Hyperspin test/Settings/Settings.ini"));

3- Moving the videos in another folder and loading them into the .swf you will get rid of the bug where you can hear the music of the video when the emulator had loaded. Just use a listener of flash going in-focus and off-focus and add/remove the video from the stage.

Feel free to use part of aeon nox code in your theme, just give credit to "dark13" if you use it ;)

Posted

Thanks for the advices dark13, they will help me for sure.

And your HS settings parser can be very usefull too, well done!

If I succeed with my little project, I will share here too.

Wait & see...

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...