【问题标题】:ExternalInterface and Javascript not working in harmonyExternalInterface 和 Javascript 无法协调工作
【发布时间】:2011-08-02 16:50:12
【问题描述】:

前几天我发布了一个关于我遇到的 Flash/Javascript 问题的帖子。请看这个: Issues with javascript properly loading and seeing everything 我知道我想如何解决它,但我对动作脚本并不熟悉。我从开发自己的时候就避免了像瘟疫这样的土坯产品,因为购买他们的产品要花一大笔钱,但是大雇主喜欢它并为此付出代价,所以我在这里。我们的“Flash”人刚离开团队,我继承了这个问题。如果您阅读我的另一篇文章,您就会知道发生了什么,所以我会继续前进。我想从 actionscript 对我的 javascript 进行一个简单的调用,这在我的另一篇文章中被引用。我特别想从 actionscript 内部调用 CheckboxCollection 函数。我不需要从动作脚本内部传递任何参数或任何类似的东西。我需要做的就是在闪存加载完成后运行该功能。 javascript 函数将处理我需要的一切,我只需要从 actionscript 调用它以使一切和谐地工作。我正在自学所有的 adobe 和 actionscript(令我沮丧),但我真的不知道 top 从这里到哪里来完成这项工作。我已经查看了 adobe 文档,但在我更好地掌握整个语言之前,我仍然迷失了方向。我将大部分动作脚本复制到这里,但我确实省略了必须处理鼠标悬停事件的所有内容,因为我的问题与鼠标悬停无关,它们都像魅力一样工作。提前致谢! -------------------------------------------------- -----------------------------------------更新:我不得不停止工作完成其他一些事情,但我回到第一步。无论我做什么,我都没有运气完成这项工作。我在这里尝试了所有建议,并尝试了我知道该怎么做的所有事情,但我没有运气。如果有人可以看看这篇文章和我链接到的那个(它是这个的配套 javascript),看看他们是否能想出任何东西。我已经尝试了很多不同的代码迭代,因此将所有的试验都放在上面是没有用的,例如什么不起作用,谢谢大家!

/*
JavaScript External Calls
*/
function RegisterExternalCalls():void
{ 
if(ExternalInterface.available)
    ExternalInterface.addCallback("HighlightWheel", HighlightWheel);
}
function HighlightWheel($args:String,$show:String,...arguments):void
{   
$args = $args == "financial"?"center":$args;
var _obj:Object = ObjectCollection[$args].Objects.Click;


if(ObjectCollection[$args].Objects.currentObject.name.toLowerCase() == "center")
{
    bcenter = true;
    _obj =  ObjectCollection[$args].Objects.currentObject.getChildByName("financialBtn");
}

if(CBool($show))
{

    if(arguments.length > 0 && arguments[0] == "TITLE") // || $args == "center")
        _obj.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_OVER));
    else
    {

        if(ObjectCollection[$args].labels.Label.toUpperCase() === "CENTER")
        {
            ObjectCollection["income"].Objects.Click.gotoAndPlay(2);
            ObjectCollection["property"].Objects.Click.gotoAndPlay(2);
            ObjectCollection["education"].Objects.Click.gotoAndPlay(2);
            ObjectCollection["health"].Objects.Click.gotoAndPlay(2);
            ObjectCollection["retirement"].Objects.Click.gotoAndPlay(2);

        }
        else
        {               
            _obj.gotoAndPlay(2);

        }
    }


}
else
{
    if(arguments.length > 0 && arguments[0] == "TITLE")
        _obj.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_OUT));
    else
    {
        if(ObjectCollection[$args].labels.Label.toUpperCase() === "CENTER")
        {
            ObjectCollection["income"].Objects.Click.gotoAndPlay(11);
            ObjectCollection["property"].Objects.Click.gotoAndPlay(11);
            ObjectCollection["education"].Objects.Click.gotoAndPlay(11);
            ObjectCollection["health"].Objects.Click.gotoAndPlay(11);
            ObjectCollection["retirement"].Objects.Click.gotoAndPlay(11);


        }
        else
        {
            _obj.gotoAndPlay(11);

        }
    }
}
}

function CallExternalFunction($label:String,$show:Boolean = true):void
{
var lbl:String = $label.toLowerCase().indexOf("btn") > -1?"financialTitle":$label     + "Title";

    if(ExternalInterface.available)
         ExternalInterface.call("COUNTRY.Financial.highlightProductGroup",lbl,$show);


}

function CBool($value:String):Boolean
{
if($value == "true")
    return true;
else
    return false;
}

function PrintSetup($evt:MouseEvent):void
{
var pjob:PrintJob = new PrintJob(); 
if(pjob.start())
{       
    pjob.addPage(wheel);

    pjob.send();
}

}

【问题讨论】:

    标签: javascript flash actionscript externalinterface


    【解决方案1】:

    我相信您通过 ExternalInterface.call 执行此操作并传递应该调用的 javascript 函数,如下所示:

    ExternalInterface.call( "CheckboxCollection" )
    

    如果需要传递参数:

    ExternalInterface.call( "CheckboxCollection", value1, value2 )
    

    欲了解更多信息here is the documentation

    【讨论】:

      【解决方案2】:

      如果在你的 JS 中你不一定需要这个:

      var CheckboxCollection = function()
      

      尝试将其更改为:

      function CheckboxCollection()
      

      即使看起来(如果 JS 仍然相同)你有任何嵌套的东西。也许你也可以尝试这样称呼它(但我从未尝试过类似的东西):

      ExternalInterface.call("SOME.PLACE.QuoteRequest.CheckboxCollection");

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-02-14
        • 1970-01-01
        • 2021-04-29
        • 2011-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多