Flash包中的“GATracker”应该使用什么上下文?

时间:2011-07-05 18:07:15

标签: flash google-analytics flash-cs4

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,我应该通过什么?

文档是here但是我找不到任何关于我应该传递给构造函数方法的第一个参数的引用。

编辑#1 :听起来我需要传递displayObjecthttp://code.google.com/p/gaforflash/source/browse/trunk/src/com/google/analytics/GATracker.as?r=398

1 个答案:

答案 0 :(得分:1)

我认为这是因为您在创建DetailView之前使用this关键字。

现在,您在声明类变量的上下文中使用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 );
   }

}