Какой контекст следует использовать для `GATracker` в пакете Flash? - PullRequest
1 голос
/ 05 июля 2011
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 {

        var tracker:AnalyticsTracker = new GATracker( this, "UA-BLABLA", "AS3", true ); 

Я получаю это:

1067: Implicit coercion of a value of type Class to an unrelated type flash.display:DisplayObject.

Это полностью имеет смысл, потому что this ссылается на type Class объект.Но - если я не могу передать type Class, что я должен пройти?

Документация здесь , но я не могу найти ссылку на то, что я должен передать в качестве первогоаргумент метода конструктора.

Редактировать # 1 : Похоже, мне нужно передать displayObject, http://code.google.com/p/gaforflash/source/browse/trunk/src/com/google/analytics/GATracker.as?r=398

1 Ответ

1 голос
/ 05 июля 2011

Я думаю, это потому, что вы используете ключевое слово this до создания DetailView.

Теперь вы используете ключевое слово this в контексте, где объявлены переменные класса (а не внутри какой-либо функции).Возможно, вам следует сделать это в конструкторе (или, возможно, в функции-обработчике для события Event.ADDED_TO_STAGE).

Кроме того, вы уверены, что хотите объявить tracker как AnalyticksTracker, а не GATracker?Обычно вы используете тот же тип для переменной, в которой хранится экземпляр, который вы создаете, используя ключевое слово new (не всегда, но обычно).

Таким образом, вы можете попробовать что-то вроде этого:

public class DetailView extends MovieClip {

   private var tracker:GATracker;

   public function DetailView() {
      // Since this is the constructor, the this keyword will refer to the DetailView instance being created
      tracker = new GATracker( this, "UA-BLABLA", "AS3", true );
   }

}
...