[转]关于getDefinitionByName的一个奇怪现象

102 篇文章 0 订阅
99 篇文章 0 订阅

http://bbs.9ria.com/viewthread.php?tid=89712&extra=page%3D1%26amp%3Borderby%3Ddateline%26amp%3Bfilter%3D2592000
 
 
假如M1是我的在flex中导入的一个SWC。
我这样用它当然是没有问题
  1. var m1:M1 = new M1();
复制代码
但是现在我想做一些别的事情。
  1. var A:Class = getDefinitionByName("M1") as Class;
复制代码
问题出来了,flash报错了!!
ReferenceError: Error #1065: 变量 M1 未定义。
好吧。我不知道怎么处理它,但是我没有停止尝试。
我尝试过这样
  1. trace(getDefinitionByName(getQualifiedClassName(M1)));
复制代码
返回的是 [object M1]
看样子我成功了,可是为什么呢?
继续探索
  1. getQualifiedClassName(M1);
  2.                         trace(getDefinitionByName("M1"));
复制代码
返回[object M1]
看到什么了吗?只要在我getDefinitionByName之前,调用一次getQualifiedClassName,不管这个getQualifiedClassName写在什么位置,就没有报错了。
真是百思不得其解,望有人能指点迷津

最佳答案binghe
swc中没有使用过的类和对象都不会被编译到swf中,所以你直接用getDefinitionByName()获取的时候,会报引用错误,因为根本就没这个类。解决办法:在某个空白地方写一下M1,让IDE编译的时候,知道应该把swc中的M1对象编译进去。这时你在其他地方用getDefinitionByName()就行了
 
 
 
 
 
swc中没有使用过的类和对象都不会被编译到swf中,所以你直接用getDefinitionByName()获取的时候,会报引用错误,因为根本就没这个类。解决办法:在某个空白地方写一下M1,让IDE编译的时候,知道应该把swc中的M1对象编译进去。这时你在其他地方用getDefinitionByName()就行了
 
 
 
 
 
 
 
swc中没有使用过的类和对象都不会被编译到swf中,所以你直接用getDefinitionByName()获取的时候,会报引用 ...
binghe 发表于 2011-8-9 11:41 

是这个原因,更好的做法是冬天修改编译参数
做一个xx-config.xml的文件放在工程下,里面内容如下
  1. <flex-config>
  2.    <includes>
  3.        <symbol>com.greencloud.view.ListGuest</symbol>
  4.               <symbol>com.greencloud.view.FindGuest</symbol>
  5.                <symbol>com.greencloud.view.CodeHelpDemo</symbol>        
  6.    </includes>
  7. </flex-config>
复制代码
symbol 标签就是你要引用的mc吃的链接全名,
在flex编译参数里加 load-config+=xx-config.xml;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用 ScriptEnv 编写的 HFSS 脚本,用于输出每个对象的欧姆损耗。你可以将此脚本应用于任何 HFSS 工程中: ```vb Sub OutputOhmicLosses() Dim oProject As Project Dim oDesign As Design Dim oModule As Module Dim oEditor As Editor Dim oDefinition As Object Dim oSolution As Object Dim oModuleSolution As Object Dim oFields As Object Dim oReport As Object Dim oOutput As Object Dim oDataset As Object Dim oResult As Object Dim oValue As Object Dim sOutputFile As String Dim sObjectName As String Dim dOhmicLoss As Double ' 获取当前工程对象 Set oProject = ScriptEnv.Project ' 获取当前设计对象 Set oDesign = oProject.GetActiveDesign ' 获取模块对象 Set oModule = oDesign.GetModule("Solutions") ' 获取编辑器对象 Set oEditor = oDesign.SetActiveEditor("3D Modeler") ' 获取定义对象 Set oDefinition = oModule.GetDefinitionByName("LastAdaptive") ' 获取解算对象 Set oSolution = oModule.GetSolution ' 执行解算 oModuleSolution = oSolution.GetModule("Fields") oModuleSolution.Solve oDefinition ' 获取场对象 Set oFields = oSolution.GetFields ' 输出欧姆损耗 sOutputFile = "C:\Output\OhmicLosses.csv" Set oReport = oModule.CreateReport "Ohmic Losses", "Fields" oReport.AddTrace "Ohmic Loss", "Ohmic Loss", False, sObjectName, Array("Domain:=","Object"), Array("SolutionName:=", oSolution.GetName()) oReport.ExportToFile sOutputFile, "CSV" ' 打开输出文件并输出结果 Set oOutput = oModule.CreateOutput("Ohmic Losses Output", sOutputFile) Set oDataset = oOutput.GetDataSets.Item(1) For Each oResult In oDataset.GetResults sObjectName = oResult.GetAsString("Object") dOhmicLoss = oResult.GetAsDouble("Ohmic Loss") Debug.Print sObjectName, dOhmicLoss Next ' 关闭输出文件 oOutput.Close ' 提示输出完成 MsgBox "欧姆损耗输出完成。" End Sub ``` 该脚本首先获取当前工程对象和设计对象,然后通过解算求解场分布。接着,脚本创建一个报告对象,并将每个对象的欧姆损耗输出到 CSV 文件中。最后,脚本打开输出文件,输出每个对象的欧姆损耗,并提示输出完成。 请注意,脚本中的输出文件路径需要根据实际情况进行修改。此外,脚本中的输出结果是通过调试窗口(Debug Window)进行输出的,你可以根据需要修改输出方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值