Wolfram Player Pro 兼容性的开发员指南

用于 Player Pro 的编程

几乎所有适用于 Mathematica 的编程和计算函数均适用于 Player Pro 应用程序的开发,但有少数编程限制:

  • 不支持包括 .NET/Link 在内的 Wolfram Symbolic Transfer Protocol 操作。请避免使用如 InstallLinkConnectLinks 等命令。这包括远程 Mathematica 内核的连接,如 gridMathematica
  • InputField 不接受任意 Mathematica 程序,尽管它接受看起来不像 Mathematica 程序的数学表达式和任何其他输入。
  • 不支持那些可用 Java、C/C++ 或 .NET 编写的替代前端来调用内核。调用内核唯一被支持的方法是通过 Mathematica 笔记本界面。
  • 不支持 GUIKit

预加载数据

Player Pro 应用程序不要求数据嵌入,外部数据可在需要时加载。然而,如果您的目标是使应用程序尽可能自成体系,请考虑这些准则。

嵌入的基本方法有两种:

Initialization
小型代码和数据块可利用 Initialization 选项包含在 Manipulate 命令中。例如
Manipulate[myfunction[mydata,n],{n,0,1},
    Initialization:>(myfunction[dat_,n_]:=...;mydata={...})];

SaveDefinitions
对于较大的代码块、软件包或大型数据文件,在创建 Manipulate 之前先对它们进行定义,再利用 SaveDefinitions 选项将其状态存储在 Manipulate 中可能会更方便。例如
<<MyPackage`
mydata=Import[...];
Manipulate[myfunction[data,n],{n,0,1},SaveDefinitions->True];

利用外部文件

Player Pro 能在运行时状态访问外部文件的功能具有多个好处。

代码组织和保护
对于大型项目,对软件包中的代码(包括利用 Wolfram Workbench)进行组织,促进可持续开发。与利用 Initialization 命令将代码包括在 Manipulate 内的做法不同,您只需包括一个调用软件包的命令。所有软件包必须利用 Encode 命令或 DumpSave 编码以创建 .mx 二进制文件。欲了解更多信息,请观看本视频

然后您可以从您的动态界面将其加载。例如
Manipulate[myfunction[n],{n,0,1},Initialization:>Needs["EncodedPackage`"]]

这样做还有一个好处是:加密源代码。

实时数据或用户指定的数据
有多种方式将外部数据调用程序纳入笔记本中,以使用户在 Player Pro 中使用自己的数据或获取预先指定的实时数据。典型示例:

  • 使用远程数据源的数据初始化应用程序:
    Manipulate[...,Initialization:>(data=Import["http://server.domain.com/latestdata.dat"])]
  • 用摄像头采集数据:
    Manipulate[...,Button["Get image", data=Import["http://server.domain.com/webcam.jpg"]
  • 让用户选择本地数据文件进行分析:
    Manipulate[..., Button["Load data", mydatapath = SystemDialogInput["FileOpen"]]]

笔记本及其他文件

只能打开由 Mathematica 创建的笔记本——无法打开不含有效文件概要缓存的笔记本。无法打开非笔记本文件。

en es ja pt-br ru