我想在舞台上添加一段简单的文字,并在用户点击它时添加一个监听器来做某事。
这是我的TextLink类:
package some.package
{
import flash.display.Sprite;
import flash.external.ExternalInterface;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
public class TextLink extends Sprite
{
public var tf:TextField = new TextField();
public var bspr:Sprite = new Sprite();
public function TextLink(tx:int, ty:int, tft:String):void
{
tf.text = tft;
tf.x = tx;
tf.y = ty;
tf.autoSize = TextFieldAutoSize.LEFT;
bspr.addChild(tf);
this.addChild(tf);
}
}
}
这就是我和听众一起呼唤它的方式:
public function test_array_of_objects():void
{
var tmp:TextLink = new TextLink(30, 30, "some text");
tmp.addEventListener(MouseEvent.CLICK, roverNotify);
addChild(tmp);
}
protected function roverNotify(e:Event):void
{
ExternalInterface.call("console.log", "got a click");
}
......但由于某种原因,我没有得到消息。 我已成功导入所有内容。关于我还能尝试什么的任何想法?
答案 0 :(得分:1)
函数TextLink在开头是否需要这样的东西: var tf:Text = new Text();
答案 1 :(得分:1)
您的TextLink类是事件调度程序吗?您正在尝试向TextLink对象添加侦听器,但是单击侦听器需要附加到您在TextLink中使用的文本字段。 TextLink需要是某种DisplayObject才能继承调度功能。
此外,构造函数不应指定返回类型(因为它们只是自己返回) - :void不应该存在于TextLink构造函数的位置。
答案 2 :(得分:1)
单击Sprite或触发事件是否有问题?如果是前者,您可以尝试添加以下代码。
tmp.mouseChildren = false;
tmp.buttonMode = true;
答案 3 :(得分:0)
ExternalInterface.call("console.log", "got a click");
你有一个像这样定义的JavaScript函数??:
function console.log(inputString) {
//do something
}
编辑:没关系,忘了Firebug。
此外,TextLink不需要是事件调度程序,但您可能希望TextLink将其 mouseChildre n属性设置为false(除非您需要能够选择该文本),这样您就不会无意中触发 TextField 和 buttonMode 上的事件为真。
编辑:另外,有什么意义?:
var bspr:Sprite = new Sprite();
bspr.addChild(tf);
最终修改
这个怎么样? http://code.google.com/p/fbug/issues/detail?id=1494
是的,你是对的,在FF3中只有当页面有注入时才会注入控制台 javascript并使用window.console。
如果在Flash加载之前放置任何访问控制台的js,它应该可以工作,例如
<script>
var triggerFirebugConsole = window.console;
</script>
如果有效,请告诉我们。我们不太可能很快解决这个问题。