- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在将强类型对象 AttractView
传递给另一个需要 IWizardView
接口(interface)的方法 addView()
时遇到困难AttractView
确实实现了。
当我按原样传递它时(如下所示),我得到编译错误 CaptureApplication.as,第 120 1067 行:将 AttractView 类型的值隐式强制转换为不相关的 IWizardView 类型。
在传递之前转换为 IWizardView
或 BaseView
会在运行时产生类似的错误。
应用类:
public class CaptureApplication extends MovieClip
{
public var attractView : AttractView;
public var captureView : CaptureView;
public var reviewView : ReviewView;
public var completeView : CompleteView;
protected var wizard : Wizard;
public function CaptureApplication()
{
// Create views
attractView = new AttractView();
captureView = new CaptureView();
reviewView = new ReviewView();
completeView = new CompleteView();
// Create wizard and add views to sequence
wizard = new Wizard( this );
wizard.addView( attractView );
wizard.addView( captureView );
wizard.addView( reviewView );
wizard.addView( completeView );
}
// ...
}
向导:
public class Wizard extends EventDispatcher
{
// ...
public function addView ( pView : IWizardView ) : void
{
// ...
}
//...
}
还有一个示例 View :
public class AttractView extends BaseView implements IWizardView
{
// ...
}
我希望的架构(为清楚起见进行了简化):
CAPTURE LIBRARY (AS3 SWC)
/ classes
/ wizard
/ IWizardView
/ Wizard
/ capture
/ IView
/ BaseView
/ AttractView
/ CaptureView
/ (etc.)
CAPTURE APPLICATION (Flash)
/ classes
/ CaptureApplication
这里的想法是,我正在构建多个具有相似 UI 的“捕获”应用程序,因此我想将通用元素提取到一个库中,并根据需要为每个独特的捕获应用程序进行扩展。
更新 1:
IWizardView
和 Wizard
实际上位于一个单独的库 SWC 中,该库包含在 CaptureApplication
项目中。还值得注意的是,FLA 和 FB 项目都包含 SWC。也许有冲突?一旦我将所有类从库移动到项目并从项目和 FLA 中删除 SWC,它就起作用了。
我明天会有更多时间玩和调查。后续更新。
更新 2:
我发现了我的架构有问题的地方。我可以将我的界面和 BaseView
类保留在我的库 SWC 中。当我尝试将我的 View (AttractView
等)从我的应用程序项目移动到库 SWC 时,问题就出现了。我的libs文件夹合并到代码中,不是实时共享的。有什么想法吗?
最佳答案
我知道这可能不起作用的唯一方法是当您将应用程序的某些部分加载到不同的应用程序域中,或者如果您使用的应用程序域驻留在不同的安全域中(在这种情况下,应用程序域将不同,无论不管你做什么)。
当 Wizard
中包含 IWizardView
的应用程序域与 AttractView
所在的应用程序域不同时,就会发生这种情况。这仅在加载应用程序部分时发生(也可能在使用 [Embed] 嵌入时发生——不太确定。)
如果是这种情况,您甚至可能拥有完全相同的合格类名和接口(interface)名,但仍然会遇到强制转换错误。注意:在 Flash Builder 中,您可以看到可以比较的声明的内存地址(特别是在异常消息中)。
引用文档的这些部分:
如果情况并非如此,并且您没有在任何地方加载任何内容,请详细说明您的问题。我真的很好奇问题是什么。
编辑关于在 SWC 中用作 RSL 的代码的应用领域的文章。
关于flash - 将强类型对象传递给需要接口(interface)的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6835645/
我想了解 Ruby 方法 methods() 是如何工作的。 我尝试使用“ruby 方法”在 Google 上搜索,但这不是我需要的。 我也看过 ruby-doc.org,但我没有找到这种方法。
Test 方法 对指定的字符串执行一个正则表达式搜索,并返回一个 Boolean 值指示是否找到匹配的模式。 object.Test(string) 参数 object 必选项。总是一个
Replace 方法 替换在正则表达式查找中找到的文本。 object.Replace(string1, string2) 参数 object 必选项。总是一个 RegExp 对象的名称。
Raise 方法 生成运行时错误 object.Raise(number, source, description, helpfile, helpcontext) 参数 object 应为
Execute 方法 对指定的字符串执行正则表达式搜索。 object.Execute(string) 参数 object 必选项。总是一个 RegExp 对象的名称。 string
Clear 方法 清除 Err 对象的所有属性设置。 object.Clear object 应为 Err 对象的名称。 说明 在错误处理后,使用 Clear 显式地清除 Err 对象。此
CopyFile 方法 将一个或多个文件从某位置复制到另一位置。 object.CopyFile source, destination[, overwrite] 参数 object 必选
Copy 方法 将指定的文件或文件夹从某位置复制到另一位置。 object.Copy destination[, overwrite] 参数 object 必选项。应为 File 或 F
Close 方法 关闭打开的 TextStream 文件。 object.Close object 应为 TextStream 对象的名称。 说明 下面例子举例说明如何使用 Close 方
BuildPath 方法 向现有路径后添加名称。 object.BuildPath(path, name) 参数 object 必选项。应为 FileSystemObject 对象的名称
GetFolder 方法 返回与指定的路径中某文件夹相应的 Folder 对象。 object.GetFolder(folderspec) 参数 object 必选项。应为 FileSy
GetFileName 方法 返回指定路径(不是指定驱动器路径部分)的最后一个文件或文件夹。 object.GetFileName(pathspec) 参数 object 必选项。应为
GetFile 方法 返回与指定路径中某文件相应的 File 对象。 object.GetFile(filespec) 参数 object 必选项。应为 FileSystemObject
GetExtensionName 方法 返回字符串,该字符串包含路径最后一个组成部分的扩展名。 object.GetExtensionName(path) 参数 object 必选项。应
GetDriveName 方法 返回包含指定路径中驱动器名的字符串。 object.GetDriveName(path) 参数 object 必选项。应为 FileSystemObjec
GetDrive 方法 返回与指定的路径中驱动器相对应的 Drive 对象。 object.GetDrive drivespec 参数 object 必选项。应为 FileSystemO
GetBaseName 方法 返回字符串,其中包含文件的基本名 (不带扩展名), 或者提供的路径说明中的文件夹。 object.GetBaseName(path) 参数 object 必
GetAbsolutePathName 方法 从提供的指定路径中返回完整且含义明确的路径。 object.GetAbsolutePathName(pathspec) 参数 object
FolderExists 方法 如果指定的文件夹存在,则返回 True;否则返回 False。 object.FolderExists(folderspec) 参数 object 必选项
FileExists 方法 如果指定的文件存在返回 True;否则返回 False。 object.FileExists(filespec) 参数 object 必选项。应为 FileS
我是一名优秀的程序员,十分优秀!