Web应用程序中的File()FileStream

时间:2011-01-26 08:20:44

标签: flex

我已经制作了桌面应用程序,我希望它也可以作为网络应用程序使用。 我在使用File()类型和FileStream的行上出错,有没有办法绕过这个?

2 个答案:

答案 0 :(得分:2)

File()类仅适用于AIR应用程序,这就是您收到错误的原因。

我就是这样做的:

  1. 您需要隔离与平台相关的代码并放入一个单独的库中。
  2. 无论平台应该在另一个隔离的库中,其他代码都可以正常工作。
  3. 创建2个简单包装器的项目。仅与公共代码耦合的Flex项目。 AIR项目,它与公共和平台相关的代码相关联。
  4. 然后,您可能需要在某个时间使用接口来切换特定于平台的实现

答案 1 :(得分:2)

要依赖@Florian F的正确回复,以下是您可以实现的方法:

创建一个抽象文件访问权限的界面

public interface IGetTheStuffService {
    function getSomeTofu():Tofu;
}

创建基于文件的实施

public class FileStuffService implements IGetTheStuffService {
    public function getSomeTofu():Tofu {
        // File-based implementation
    }
}

基于HTTP的实施

public class HTTPStuffService implements IGetTheStuffService {
    public function getSomeTofu():Tofu {
        // HTTP-based implementation
    }
}

在您的消费者中,依靠IGetTheStuffService

[Inject] public var tofuService:IGetTheStuffService;

public function doSomeStuff():void {
    var tofu:Tofu = tofuService.getSomeTofu();
    // act on the tofu
}

请注意注入元标记。这是您的依赖注入(DI)系统将根据配置(Air应用程序的FileStuffService或Web应用程序的HTTPStuffService)推送您的依赖项的地方。欧芹和RobotLegs使用 [注入] ,其中fiex-ioc使用 [IocBind]

当然,你可以没有DI容器...你只需要直接注入参数。

但是你明白了......实际上是一个非常简单的模式。