Моят код е външен .as
файл. Google предоставя този код в своята демонстрация, която съдържа this
ключова дума:
import com.google.analytics.AnalyticsTracker;
import com.google.analytics.GATracker;
var tracker:AnalyticsTracker = new GATracker( this, "UA-111-222", "AS3", true );
playGame.addEventListener( MouseEvent.CLICK, onButtonClick );
function onButtonClick ( event:Event ):void
{
tracker.trackPageview("/myGame1");
}
Този код вероятно работи добре в контекста по подразбиране, но тъй като вграждам този код във външен .as
файл, където дефинирам пакет, очевидно препратката this
се различава, тъй като контекстът на изпълнение е различен.
В момента го имам така:
package {
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.net.URLRequest;
import flash.net.navigateToURL;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
import flash.external.ExternalInterface;
import com.google.analytics.AnalyticsTracker;
import com.google.analytics.GATracker;
public class DetailView extends MovieClip {
//private var tracker:GATracker;
private var tracker:AnalyticsTracker;
function slugify(text) {
text = text.replace(/[^-a-zA-Z0-9,&\s]+/ig, '');
text = text.replace(/-/gi, "_");
text = text.replace(/\s/gi, "-");
return text.toLowerCase();
}
public static var NEXTOFFER:String = "DETAIL_NEXTOFFER";
public static var TERMS:String = "DETAIL_TERMS";
private var link:String;
private var fbshare:String;
private var twshare:String;
private var offerID:Number;
private var details:Sprite;
private var terms:Sprite;
public function DetailView() {
ExternalInterface.call( "console.log", 'before');
ExternalInterface.call( "console.log", typeof GATracker );
ExternalInterface.call( "console.log", typeof this );
tracker = new GATracker( this, "UA-WATEVER", "AS3", true );
ExternalInterface.call( "console.log", 'after');
Забележете, че имам 4 обаждания до console.log
. Първите 3 се задействат, но след оператора new GATracker
, 4-ият не се задейства.
Имам чувството, че замествам целия пакет с обекта, създаден от new GATracker
, когато трябва да предавам различен контекст.
Вярвам, че правилният контекст, който трябва да предам, е какъвто и да е this
по подразбиране, когато не е вътре в пакет/външен файл, предполагам, че препраща към обекта на главния етап.
Ако предположението ми е правилно, как бих реферирал обекта на главния етап от вътрешността на конструктора?