为什么我的代码不能在android(as3)中使用CameraRoll

时间:2015-01-16 16:30:06

标签: android actionscript-3 actionscript camera camera-roll

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手机中无法正常工作。 什么是我的代码的metter ...帮帮我.. 我该怎么办?

如果你有任何解决方案,我很乐意发展。 我只有一个月的时间学习as3

1 个答案:

答案 0 :(得分:0)

在您的问题中提到的一些细节,我认为这是一个权限问题,代码很好。尝试添加此权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

您可以在your_app-app.xml之前直接将其添加到</application>,其中 your_app 是您的应用程序(项目)的名称:

<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设置对话框,其中xxx是AIR的版本,可从文件菜单访问,然后转到权限标签,然后选择WRITE_EXTERNAL_STORAGE这样的权限(当然这适用于Flash):

enter image description here

如果您仍然一无所获,请尝试向ErrorEvent对象添加CameraRoll事件侦听器以捕获错误:

cameraroll.addEventListener(
    ErrorEvent.ERROR, 
    function(e:ErrorEvent):void { 
        log.text = e.text;
    }
)

希望可以提供帮助。