我正在尝试使用actionscript代码构建一个swf文件。我已经下载了 Flex SDK。现在我正在尝试编译 .as 文件。它工作正常,并使用 Flex Home 的 bin 文件夹中的以下命令编译.swf文件。.
命令:/mxmlc/home/anshul/Downloads/HelloWorld/src/Main.as
文件名: Main.as
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.text.TextField;
public class Main extends Sprite
{
public function Main():void
{
if (stage) init();
}
private function init(e:Event = null):void
{
var tf:TextField = new TextField();
tf.text = "Hello, world!, Lets see working or not";
addChild( tf );
}
}
}
这是一个基本示例,工作正常。但是如果我添加导入,
导入闪存网网信息;
然后它抛出以下错误错误:找不到定义 flash.net:网络信息。
我已经浏览了各种教程,但似乎无法使其工作。那么我需要在运行命令时包含任何库吗?
在谈论您的代码之前,您应该知道flash.net.NetworkInfo
仅适用于 Air 2 及更高版本。正如Adobe所说:">...此功能在所有桌面操作系统和 AIR for TV 设备上受支持,但并非所有移动设备都支持此功能。可以在运行时使用 NetworkInfo.isSupport 属性测试支持。有关跨多个配置文件的 API 支持的详细信息,请参阅 AIR 配置文件支持。...",并非所有移动设备都支持它,这就是为什么最好使用 NetworkInfo.isSupported
来验证它是否受支持的原因。
有关如何使用它,请从我在此代码中实现 Adobe.com 中获取此示例:
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="620" height="573" creationComplete="init(event)">
<fx:Script>
<![CDATA[
import flash.net.NetworkInfo;
import mx.events.FlexEvent;
protected function init(event:FlexEvent):void
{
// enable the button only if NetworkInfo is supported
btn.enabled = NetworkInfo.isSupported;
}
protected function btn_clickHandler(event:MouseEvent):void
{
// get device network interfaces
var output:String = '';
var results:Vector.<NetworkInterface> = NetworkInfo.networkInfo.findInterfaces();
for (var i:int=0; i<results.length; i++) {
output = output + "Name: " + results[i].name + "n"
+ "DisplayName: " + results[i].displayName + "n"
+ "MTU: " + results[i].mtu + "n"
+ "HardwareAddr: " + results[i].hardwareAddress + "n"
+ "Active: " + results[i].active + "n";
for (var j:int=0; j<results[i].addresses.length; j++) {
output = output + "Addr: " + results[i].addresses[j].address + "n"
+ "Broadcast: " + results[i].addresses[j].broadcast + "n"
+ "PrefixLength: " + results[i].addresses[j].prefixLength + "n"
+ "IPVersion: " + results[i].addresses[j].ipVersion + "n";
}
output = output + "n";
}
txt.text = output;
}
]]>
</fx:Script>
<s:Button id="btn" x="10" y="10" width="192" height="33" label="Get Network Interfaces"
click="btn_clickHandler(event)"/>
<s:TextArea id="txt" x="8" y="45" width="602" height="509"/>
</s:WindowedApplication>
正如@akmozo所说,flash.net.NetworkInfo
是一个 AIR 类,因此您需要在构建命令中包含 AIR 配置:
/mxmlc ./Main.as -load-config+=$FLEX_HOME/frameworks/air-config.xml