简体   繁体   English

我想通过使用ExternalInterface在ActionScript 3中使用HTML表单输入值

[英]I want to use HTML Form input values in ActionScript 3 by using ExternalInterface

I have an HTML Form and a SWF file on the same page. 我在同一页面上有HTML表单和SWF文件。 I want the user to enter some values in an html form, click send and have the values sent to the swf for populating (No Refresh of the page, and I would like to use AJAX/JSON but I cannot.) I cannot get this to work. 我希望用户以html形式输入一些值,单击“发送”,然后将值发送到swf进行填充(页面未刷新,我想使用AJAX / JSON,但不能。)上班。 At this point I just want to write the javascript variables or at least parse the JS Object onto the artboard of the swf. 在这一点上,我只想编写javascript变量或至少将JS Object解析到swf的画板上。 Once that works I can go far. 一旦可行,我可以走得更远。

HTML: HTML:

<article>
        <aside>
            <div class="box">
                <form id="submit2swf" name="submit2swf"> 
                    <label>Link 1:</label>
                    <input name="link1" value="www.google.com" />
                    <label>Link 2:</label>
                    <input name="link2" value="www.autotrader.com" />
                    <label>Link 3:</label>
                    <input name="link3" value="www.webgraphicsatlanta.com" />
                    <label>Give this a string:</label>
                    <textarea name="string" placeholder="Default string is empty variable..."></textarea>
                </form>
                <div id="send2swf" class="button">Send this data to the SWF</div>
            </div>
        </aside><aside>
            <div class="box">
                <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="300" height="300" id="dogs" align="middle">
                <param name="movie" value="dogs/dogs.swf" />
                <param name="quality" value="high" />
                <param name="bgcolor" value="#ffffff" />
                <param name="play" value="true" />
                <param name="loop" value="true" />
                <param name="wmode" value="window" />
                <param name="scale" value="showall" />
                <param name="menu" value="true" />
                <param name="devicefont" value="false" />
                <param name="salign" value="" />
                <param name="allowScriptAccess" value="sameDomain" />
                <!--[if !IE]>-->
                <object id="flashMovie" type="application/x-shockwave-flash" data="dogs/dogs.swf" width="300" height="300">
                    <param name="movie" value="dogs/dogs.swf" />
                    <param name="quality" value="high" />
                    <param name="bgcolor" value="#ffffff" />
                    <param name="play" value="true" />
                    <param name="loop" value="true" />
                    <param name="wmode" value="window" />
                    <param name="scale" value="showall" />
                    <param name="menu" value="true" />
                    <param name="devicefont" value="false" />
                    <param name="salign" value="" />
                    <param name="allowScriptAccess" value="sameDomain" />
                <!--<![endif]-->
                    <a href="http://www.adobe.com/go/getflash">
                        <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
                    </a>
                <!--[if !IE]>-->
                </object>
                <!--<![endif]-->
            </object>    
            </div>
        </aside>
    </article>

The JS: JS:

function sendData(){
    inputs = $('#submit2swf :input'),
    urls = {};
    inputs.each(function() {
        urls[this.name] = $(this).val();
    });
    console.log(urls);
    return urls;
}
$(document).ready(function(e) {
    $('#send2swf').on('click',function(){
        sendData();
    });
});

The AS3: AS3:

import flash.external.ExternalInterface;

var retval:int = ExternalInterface.call("sendData()", "urls");
var str = retval.toString();

var myTextBox:TextField = new TextField();    
myTextBox.text = str;    
addChild(myTextBox); 

To send data to swf, you need to register callback in actionscript first. 要将数据发送到SWF,您需要先在ActionScript中注册回调。

ExternalInterface.addCallback("setUrls", setUrls);

private function setUrls(urls:String) {
    var myTextBox:TextField = new TextField();    
    myTextBox.text = str;    
    addChild(myTextBox); 
}

Then you need to invoke it from javascript. 然后,您需要从javascript调用它。

function sendData(){
    inputs = $('#submit2swf :input'),
    urls = {};
    inputs.each(function() {
        urls[this.name] = $(this).val();
    });
    console.log(urls);
    $('dogs').setUrls(urls);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 ExternalInterface不链接javascript和动作脚本3 - ExternalInterface not linking javascript and actionscript 3 动作脚本ExternalInterface名称空间冲突 - actionscript ExternalInterface namespace collisions 使用动作脚本“ eval”的ExternalInterface.call仅在Firefox中不起作用,在Chrome中不起作用 - ExternalInterface.call using actionscript “eval” only works in firefox not chrome 使用 ExternalInterface 从 JavaScript 调用 ActionScript 3.0/Flash 中的 function - Calling a function in ActionScript 3.0/Flash from JavaScript using ExternalInterface 使用ExternalInterface打开浏览器窗口,然后在其中编写HTML - Open browser window using ExternalInterface then write HTML in it 我想将 html 表单值传递给按钮上的 href 标记 - I want to pass html form values to href tag on button 使用jquery在原始html中获取html表单输入值 - using jquery to get html form input values in raw html ActionScript ExternalInterface调用未到达javascript - Actionscript ExternalInterface call not reaching javascript 我可以使用 JAVASCRIPT/jQuery 将表单中的输入保存到 HTML 中的 .txt,然后使用它吗? - Can I save input from form to .txt in HTML, using JAVASCRIPT/jQuery, and then use it? Flex / Flash 4 ExternalInterface.call-尝试从HTML获取字符串到Actionscript - Flex/Flash 4 ExternalInterface.call - trying to get a string from HTML to Actionscript
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM