Мой код - внешний файл .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
четвертый не стреляет.
У меня такое чувство, что я перезаписываю весь пакет объектом, созданным из new GATracker
, когда мне нужно передать другой контекст.
Я считаю, что правильный контекст, который я должен передать, это то, к чему this
по умолчанию относится, когда он не находится внутри пакета / внешнего файла, я предполагаю, что он ссылается на объект главной сцены.
Если мое предположение верно, как бы я ссылался на объект главной сцены изнутри конструктора?