[英]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.