air中不能直接用Loader的loadBytes()方法加载swf

因为swf是可执行文件,所以在aodbe air中通过URLLoader加载Binary文件的方式加载一个外面的swf进内存,这时候如果不加处理直接通过Loader实例的loadBytes()方法加载内存中的这个包含这个swf的ByteArray对象,那么air会报错:

  SecurityError: Error #3015: Loader.loadBytes() is not permitted to load content with executable code.

  loadBytes方法不能加载可执行的内容。

在Adobe air中要想解决这个问题,只需要按照下面的做法来做就可以了:

  var loader:Loader = new Loader();
  var loaderContext:LoaderContext = new LoaderContext();
  loaderContext.allowLoadBytesCodeExecution = true;
  loader.loadBytes(bytes, loaderContext);

 

上面的问题只会出现在air中。一般的swf中则随便用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要基于pcl库实现点云lvx格式解析并转换为pcd格式,可以按照以下步骤进行: 1. 读取lvx文件:使用pcl库的`pcl::io::loadBytes`函数,可以将lvx文件的二进制数据读取到内存。 ```cpp std::ifstream file("test.lvx", std::ios::binary); std::streampos begin, end; begin = file.tellg(); file.seekg(0, std::ios::end); end = file.tellg(); std::streamsize size = end - begin; file.seekg(0, std::ios::beg); std::vector<char> data(size); file.read(&data[0], size); file.close(); ``` 2. 解析lvx文件:对于每一帧点云数据,lvx文件的格式是由固定长度的帧头和变长的点云数据组成,可以按照帧头的信息来解析点云数据。首先,定义一个结构体来表示帧头信息。 ```cpp struct FrameHeader { uint64_t frame_index; uint64_t current_offset; uint64_t next_offset; uint64_t frame_length; uint64_t device_count; uint64_t device_index; uint64_t version; uint64_t error_code; uint64_t timestamp_type; uint64_t timestamp; uint64_t data_type; }; ``` 然后,按照帧头信息来解析点云数据。 ```cpp // 定义点云结构体 struct PointXYZIRT { PCL_ADD_POINT4D; float intensity; uint8_t ring; double time_stamp; EIGEN_MAKE_ALIGNED_OPERATOR_NEW } EIGEN_ALIGN16; // 定义点云类型 POINT_CLOUD_REGISTER_POINT_STRUCT(PointXYZIRT, (float, x, x)(float, y, y)(float, z, z)(float, intensity, intensity)(uint8_t, ring, ring)(double, time_stamp, time_stamp)) // 定义点云格式 typedef pcl::PointCloud<PointXYZIRT> PointCloudXYZIRT; // 解析点云数据 const char *data_ptr = &data[0]; while (data_ptr < &data[0] + size) { // 解析帧头 FrameHeader header; memcpy(&header, data_ptr, sizeof(FrameHeader)); data_ptr += sizeof(FrameHeader); // 解析点云数据 PointCloudXYZIRT::Ptr cloud(new PointCloudXYZIRT); uint64_t point_count = (header.frame_length - sizeof(FrameHeader)) / sizeof(PointXYZIRT); for (uint64_t i = 0; i < point_count; ++i) { PointXYZIRT point; memcpy(&point, data_ptr, sizeof(PointXYZIRT)); data_ptr += sizeof(PointXYZIRT); cloud->push_back(point); } // 转换点云格式 pcl::PointCloud<pcl::PointXYZI>::Ptr cloud_pcd(new pcl::PointCloud<pcl::PointXYZI>); pcl::copyPointCloud(*cloud, *cloud_pcd); // 将点云保存为pcd文件 std::string file_name = "frame_" + std::to_string(header.frame_index) + ".pcd"; pcl::io::savePCDFileASCII(file_name, *cloud_pcd); } ``` 以上是使用pcl库解析lvx格式并转换为pcd格式的基本步骤,实现的过程可能还需要处理一些细节问题,例如点云坐标系的转换、点云数据的滤波和配准等,具体要根据实际情况进行调整和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值