Foumart Games Blog [    ] - [    ] - [    ] - [ o ] - [    ] - [    ] - [    ] - [ x ]
2014-07-03 Check HTML restrictions in SWF. Determine AllowScriptAccess and AllowNetworking with AS3 Collapse

As I was digging around the allowNetworking setting and how to determine if it's allowed inside flash at runtime, I decided to go deeper and catch other types of embedding restrictions, like the allowScriptAccess parameter. I've seen sites that block outgoing links of certain flash files - in most cases flash games are prevented to access the web, resulting in negative effect over their authors - the game developers.

Here are the allowed settings for both HTML parameters:

allowScriptAccess:["always" / "sameDomain" / "never"]
allowNetworking:["all" / "internal" / "none"]

The following useful script determines any of the mentioned restrictions:

if(Capabilities.playerType != "External" && Capabilities.playerType != "StandAlone"){
    var url:String;
    try{
        navigateToURL(new URLRequest(null));
    } catch (err:*){
        if(err is SecurityError){
            trace("SECURITY ERROR::allowNetworking is disabled!");
            throw new Error("SECURITY ERROR::allowNetworking is disabled!\n"+err);
        } else {
            trace("SECURITY::allowNetworking is OK!");
        }
    }
    try{
        if (ExternalInterface.available){
            url = ExternalInterface.call("window.location.href.toString");
        } else {
            url = _stage.loaderInfo.loaderURL;
        }
        trace("SECURITY::allowScriptAccess is OK!");
    } catch(err:*){
        if(err is SecurityError){
            trace("SECURITY::allowScriptAccess is disabled!");
        } else {
            trace("SECURITY::Unknown Error!",err);
        }
}

The script first checks if it is running in a browser online with Capabilities.playerType, then tries a null URLRequest to determine the allowNetworking setting.

If allowNetworking is set to "all" the compiler will throw a TypeError, otherwise with "internal" or "none" setting there will be a SecurityError.

Next allowScriptAccess is verified using ExternalInterface in attempt to retrieve the current URL with the javascript call "window.location.href.toString".

Again a SecurityError will differentiate "always" from "sameDomain" and "never".

Finally an "url" var is available for further evaluation, domain check or tracking purpose.

For convenience, I'll include the import statements as well:
import flash.net.URLRequest; 
import flash.net.navigateToURL;
import flash.system.Capabilities;
import flash.external.ExternalInterface;
(It's a hard quest to import classes manually after a copied snippet, isn't it :)

Let me know if you have issues with the above code. Thanks.

 2017-05-01 JavaScript Sound Effect Generator SoundFX

Every year there is a unique JavaScript game development competition happening for a month, starting at 13th September - the #js13kgames. The Jam has one main characteristic: 13 kilobytes limit of the archived game source, as constrained by Andrzej Mazur - the compo author. I participated in 2016 with Skip'n Glitch - a game contained in a single html file and had no problem compressing the game in 13 kilobytes. However it wouldn't happen easily if some useful lightweight libraries weren't prepared beforehand. One such script is a sound controller from my less than 1kb js libraries. ..


 2016-11-23 JavaScript HTML5 Canvas Lens Flare effect

As the web tech is evolving, the flash player for web browsers is getting more and more obsolete. For example the biggest advertising platform - Google's DoubleClick dropped support for flash ads. I'm not speaking against the flash technology, which is still viable for game development (it can be easily compiled for mobile or wrapped into Steam). However in web there are new heroes and one of them is the HTML Canvas. I've already shared some lightweight JavaScript libraries used in #js13kgames and today I'm sharing another class - Lens Flare effect! ..


 2015-02-28 Get the domain a SWF is hosted in with AS3

When creating a flash game for the web it's crucial to know the domain the game SWF is being loaded from. There are numerous ways to embed a SWF in a website and the different methods of obtaining the domain name at run-time are giving different values. For example a game could be hosted in sourcedomain.com but displayed in a web page at another domain, say hotlinkingdomain.com. In this case there is one method to obtain the domain that is hosting the SWF and other methods of obtaining the domain that is embedding (hot linking) that SWF...


 2013-05-24 Atrakt 4096 successful entry in LudumDare#26 Compo

Atrakt 4096 is minimalist mixture between Sci-Fi action and a sliding puzzle. Vanquish all alien spawns in this level based game, involving not only exploring and fighting but planning, stealth, strategy and logical thinking as well! This game was developed in Flash-AS3 and is an extension of my Attract 4kb engine which consists of 4 kilobytes of code (4 classes)...


 2013-04-10 DisplaceR - Displacement Map Filter Tweener - AS3

DisplaceR is a lightweight Displacement Map Filter Tweener targeting Flash Player 9. Written in ActionScript 3.0¹², DisplaceR is built with the idea to be as simple as possible, becoming accessible by all kind of flash developers and designers. Being a static class makes it available anywhere in your project. Tweening is achieved only with one line of code...


 2012-10-23 Attract 4kb a 4096 bytes adventure !

Born in 4kb Games on FlashGameLicense competition. A game that is exactly 4096 bytes :) It's featuring Artificial Intelligence, Fog of War, Player Health, 4 Maps and 12 Levels ! Developed in ActionScript 3 for Flash Player 9. Here is a Github link where you can view the optimized code...



FoumartGames.com Copyright
© 2009-2017 by Noncho Savov
FoumartGames.com is a computer game workshop and arcade website, led by independent game developer. The site showcases games and game prototypes invented and developed by Noncho Savov. Have fun!