1 /** 2 * com.sekati.services.Flink 3 * @version 2.0.5 4 * @author jason m horwitz | sekati.com 5 * Copyright (C) 2007 jason m horwitz, Sekat LLC. All Rights Reserved. 6 * Released under the MIT License: http://www.opensource.org/licenses/mit-license.php 7 */ 8 9 import com.sekati.core.App; 10 import flash.external.ExternalInterface; 11 12 /** 13 * Easily add deeplinking into flash sites 14 * 15 * {@code Usage: 16 * // Add Flink.js to your swf html page: 17 * <script language="javascript" src="js/Flink.js"></script> 18 * 19 * // enable swLiveConnect: 20 * fscommand ("swLiveConnect", "true"); 21 * } 22 */ 23 class com.sekati.services.Flink { 24 25 private static var _link:String; 26 private static var _isAvailable:Boolean = ExternalInterface.available; 27 28 /** 29 * get deeplink anchor 30 * @return String 31 * {@code Usage: 32 * var currentDeeplink:String = Flink.getLink(); 33 * } 34 */ 35 public static function getLink():String { 36 _link = String( ExternalInterface.call( "getFlink" ) ); 37 App.log.info( "Flink", "* Flink.getLink = '" + _link + "'" ); 38 return _link; 39 } 40 41 /** 42 * set deeplink anchor and page title 43 * @param pgTitle (String) 44 * @param anchor (String) 45 * @return String 46 * {@code 47 * Flink.setLink("Section Three","section_three"); 48 * } 49 */ 50 public static function setLink(pgTitle:String, anchor:String):Void { 51 if( !App.FLINK_ENABLE ) return; 52 ExternalInterface.call( "setFlink", pgTitle, anchor ); 53 _link = anchor; 54 App.log.info( "Flink", "* Flink.setLink = '" + _link + "'" ); 55 } 56 57 /** 58 * wrapper to Flink JavaScript lib - returns the entire current url 59 * @return String 60 */ 61 public static function getRef():String { 62 var r:Object = ExternalInterface.call( "getRef" ); 63 return String( r ); 64 } 65 66 /** 67 * call a javascript function from actionscript 68 * @return Void 69 * {@code 70 * Flink.jsCall ("helloWorld", "boy", "jason"); 71 * } 72 */ 73 public static function jsCall():Void { 74 ExternalInterface.call.apply( null, arguments ); 75 } 76 77 /** 78 * allow javascript access to call an actionscript function 79 * @param fnName (String) as function name as string 80 * @param instance (Object) scope of fnName 81 * @param fn (Function) as function name 82 * @return Void 83 * {@code Usage: 84 * Flink.jsAllow ("helloFlash", this, helloFlash); 85 * } 86 */ 87 public static function jsAllow(fnName:String, instance:Object, fn:Function):Void { 88 trace( "*** Flink.setAvailable: '" + fnName + "'" ); 89 ExternalInterface.addCallback( fnName, instance, fn ); 90 } 91 92 private function Flink() { 93 } 94 }