AS3进行3D设备测试
package jing.utils.display
{
import flash.display.Stage;
import flash.display.Stage3D;
import flash.display3D.Context3DTextureFormat;
import flash.display3D.textures.Texture;
import flash.events.ErrorEvent;
import flash.events.Event;
import jing.turbo.handle.Handle;
import jing.turbo.handle.HandleDispatcher;
/**
* 3D设备显存测试工具
* @author Jing
*
*/
public class Device3DTest extends HandleDispatcher
{
private var _report:ReportData;
/**
* 测试报告
* @return
*
*/
public function get report():ReportData
{
return _report;
}
private var _stage3D:Stage3D;
public function runTest(stage:Stage):void
{
_report = new ReportData();
_stage3D = stage.stage3Ds[0];
_stage3D.addEventListener(Event.CONTEXT3D_CREATE, _stage3D_context3dCreatedHandler);
_stage3D.addEventListener(ErrorEvent.ERROR, _stage3D_errorHandler);
_stage3D.requestContext3D();
}
private function _stage3D_context3dCreatedHandler(e:Event):void
{
var texture:Texture;
var count:int;
try
{
while (true)
{
texture = _stage3D.context3D.createTexture(512, 512, Context3DTextureFormat.BGRA, false);
count++;
}
}
catch (e:Error)
{
}
_report.maxMemoryCapacity = count << 20;
_report.support3d = true;
end();
}
private function _stage3D_errorHandler(e:ErrorEvent):void
{
end();
}
private function end():void
{
_stage3D.removeEventListener(Event.CONTEXT3D_CREATE, _stage3D_context3dCreatedHandler);
_stage3D.removeEventListener(ErrorEvent.ERROR, _stage3D_errorHandler);
_stage3D.context3D.dispose();
_stage3D = null;
this.sendHandle(new Handle(Handle.COMPLETE));
trace("是否支持3D:", _report.support3d, " 显存容量: ", _report.maxMemoryCapacity >> 20, "MB");
}
}
}
class ReportData
{
/**
* 是否支持3D
*/
public var support3d:Boolean = false;
/**
* 最大显示内存容量
*/
public var maxMemoryCapacity:uint = 0;
}
posted on 2013-06-10 15:54 jinglikeblue 阅读(229) 评论(0) 收藏 举报
浙公网安备 33010602011771号