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