为什么我的代码在 android(as3) 中无法处理 CameraRoll
why my code is not working about CameraRoll in android(as3)
import flash.media.CameraRoll;
import flash.display.Loader;
import flash.media.MediaPromise;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.events.MediaEvent;
import flash.events.Event;
backbtn6.addEventListener(MouseEvent.CLICK, back);
var cameraroll:CameraRoll;
var loader:Loader;
var promise:MediaPromise;
var bitmap:Bitmap;
var bitmapdata:BitmapData;
openpic.addEventListener(MouseEvent.CLICK, selectpic);
function selectpic(e:MouseEvent):void
{
if(CameraRoll.supportsBrowseForImage)
{
cameraroll = new CameraRoll();
cameraroll.addEventListener(MediaEvent.SELECT, loadpic);
cameraroll.browseForImage();
}
}
function loadpic(e:MediaEvent):void
{
promise = e.data as MediaPromise;
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, showpic);
loader.loadFilePromise(promise);
}
function showpic(e:Event):void
{
if(bitmap != null)
{
removeChild(bitmap);
}
var originalWidth:int = Bitmap(e.currentTarget.content).width;
var originalHeight:int = Bitmap(e.currentTarget.content).height;
bitmapdata = new BitmapData(originalWidth,originalHeight);
bitmap = new Bitmap(bitmapdata);
bitmap.bitmapData = Bitmap(e.currentTarget.content).bitmapData;
bitmap.x = 0;
bitmap.y = 0;
addChild(bitmap);
}
这是我使用 AIR android 的 as3 代码。
我写下了这段代码,看到了其他人的代码。
但它在我的 android phone 中不起作用。
我的代码有什么问题...帮帮我..
我该怎么办??
如果您有任何解决方案,很高兴开发。
我刚学了一个月as3
根据你问题中提到的几个细节,我认为这是权限问题,代码没问题。尝试添加此权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
您可以直接将它添加到您的 your_app-app.xml
,其中 your_app 是您的应用程序(项目)的名称,在 </application>
之前像这样:
<application xmlns="http://ns.adobe.com/air/application/15.0">
<!-- ... -->
<android>
<manifestAdditions>
<![CDATA[<manifest>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
</manifest>]]>
</manifestAdditions>
</android>
</application>
当然,不要触及 XML 的其他内容,您只需添加(或编辑,如果已经存在)部分 <android>...</android>
。
或者简单地使用 AIR xxx for Android Settings 对话框,其中 xxx
是 AIR 的版本,可以从 File 访问 菜单,然后转到 Permissions 选项卡和 select 像这样的 WRITE_EXTERNAL_STORAGE
权限(当然这是针对 Flash 的):
如果您仍然总是一无所获,请尝试向您的 CameraRoll
对象添加一个 ErrorEvent
事件侦听器以捕获错误:
cameraroll.addEventListener(
ErrorEvent.ERROR,
function(e:ErrorEvent):void {
log.text = e.text;
}
)
希望能帮到你。
import flash.media.CameraRoll;
import flash.display.Loader;
import flash.media.MediaPromise;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.events.MediaEvent;
import flash.events.Event;
backbtn6.addEventListener(MouseEvent.CLICK, back);
var cameraroll:CameraRoll;
var loader:Loader;
var promise:MediaPromise;
var bitmap:Bitmap;
var bitmapdata:BitmapData;
openpic.addEventListener(MouseEvent.CLICK, selectpic);
function selectpic(e:MouseEvent):void
{
if(CameraRoll.supportsBrowseForImage)
{
cameraroll = new CameraRoll();
cameraroll.addEventListener(MediaEvent.SELECT, loadpic);
cameraroll.browseForImage();
}
}
function loadpic(e:MediaEvent):void
{
promise = e.data as MediaPromise;
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, showpic);
loader.loadFilePromise(promise);
}
function showpic(e:Event):void
{
if(bitmap != null)
{
removeChild(bitmap);
}
var originalWidth:int = Bitmap(e.currentTarget.content).width;
var originalHeight:int = Bitmap(e.currentTarget.content).height;
bitmapdata = new BitmapData(originalWidth,originalHeight);
bitmap = new Bitmap(bitmapdata);
bitmap.bitmapData = Bitmap(e.currentTarget.content).bitmapData;
bitmap.x = 0;
bitmap.y = 0;
addChild(bitmap);
}
这是我使用 AIR android 的 as3 代码。 我写下了这段代码,看到了其他人的代码。 但它在我的 android phone 中不起作用。 我的代码有什么问题...帮帮我.. 我该怎么办??
如果您有任何解决方案,很高兴开发。 我刚学了一个月as3
根据你问题中提到的几个细节,我认为这是权限问题,代码没问题。尝试添加此权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
您可以直接将它添加到您的 your_app-app.xml
,其中 your_app 是您的应用程序(项目)的名称,在 </application>
之前像这样:
<application xmlns="http://ns.adobe.com/air/application/15.0">
<!-- ... -->
<android>
<manifestAdditions>
<![CDATA[<manifest>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
</manifest>]]>
</manifestAdditions>
</android>
</application>
当然,不要触及 XML 的其他内容,您只需添加(或编辑,如果已经存在)部分 <android>...</android>
。
或者简单地使用 AIR xxx for Android Settings 对话框,其中 xxx
是 AIR 的版本,可以从 File 访问 菜单,然后转到 Permissions 选项卡和 select 像这样的 WRITE_EXTERNAL_STORAGE
权限(当然这是针对 Flash 的):
如果您仍然总是一无所获,请尝试向您的 CameraRoll
对象添加一个 ErrorEvent
事件侦听器以捕获错误:
cameraroll.addEventListener(
ErrorEvent.ERROR,
function(e:ErrorEvent):void {
log.text = e.text;
}
)
希望能帮到你。