2011-03-12 61 views
0

我有一个HTML框,并从项目中加载本地html文件。 在这个HTML文件我使用jquery,我想从我的用户目录加载图像。 我从我的用户目录看到图像,但jquery不起作用。 我得到这个错误:从本地HTML文件(在应用程序工作区中)访问本地图像(不在应用程序工作区中)时出现的问题

TypeError: Error #1009: Cannot access a property or method of a null object reference. 
    at crop/onLoaded()[/Flex Bundle/workspace/crop/src/crop.mxml:119] 
    at flash.events::EventDispatcher/dispatchEventFunction() 
    at flash.events::EventDispatcher/dispatchEvent() 
    at flash.html::HTMLLoader/onCompleteTimer() 
    at flash.utils::Timer/_timerDispatch() 
    at flash.utils::Timer/tick() 

但是,如果我从应用程序的工作空间加载图像,一切工作正常(我看到的图像与jQuery的原理)。

这是一个政策问题?错误说这是一个“空对象引用”的问题,但这不可能是真实的...

任何想法?

达米安

回答

0

我拷贝从应用程序目录中的文件到自定义目录解决方案:

瓦尔:

private var fileName:String = 'config.xml'; 
private var workingDirectory:String = 'MyNewAppDir'; 
  1. 短而简单:
var f:File = File.applicationDirectory.resolvePath(this.fileName); 
f.copyTo(File.documentsDirectory.resolvePath(this.workingDirectory+"/"+this.fileName)); 

OR 2长而复杂:

/** 
* read content 
*/ 
var file:File = File.applicationDirectory.resolvePath(this.fileName); 
var read:FileStream = new FileStream(); 
read.open(file, FileMode.READ); 
var content:String = read.readMultiByte(read.bytesAvailable, "utf-8") ; 
read.close(); 

/** 
* save content 
*/ 
var write:FileStream = new FileStream(); 
write.open(File.documentsDirectory.resolvePath(this.workingDirectory + "/" + this.fileName), FileMode.WRITE); 
write.writeMultiByte(content, "utf-8"); 
write.close(); 
0

所做的是帮助所有,如果你把图像中的另一个目录?

你可以把图像文件在我的文档/ myairapp或/家庭/用户/文件/ myairapp然后打开它:

var original = air.File.documentsDirectory.resolvePath("myairapp/test.jpg"); 

该文件是你可以有取决于目录的权限问题?

+0

这是行不通的。我从documentsDirectory打开html文件和图像。我将新图像保存在同一个目录中。这工作没有任何权限问题。 – Damian 2011-03-17 18:38:39