gpt4 book ai didi

apache-flex - 大图加载问题

转载 作者:行者123 更新时间:2023-12-04 06:40:49 25 4
gpt4 key购买 nike

我已经厌倦了从下面的 url 加载图像是我的示例代码,当尝试加载宽度或高度大于 8191 像素的大图像时,Event.COMPLETE 没有被调度,我知道 Flash 播放器 10 BitmapData 限制,所以我们不能加载大于这个 8191 像素限制的图像吗?是否有任何解决方法或您建议的任何其他方法?

 private function loadImage(url:String):void
{
var request:URLRequest = new URLRequest(url);
var imageLoader:Loader = new Loader();
var context:LoaderContext;
context = new LoaderContext();
context.checkPolicyFile = true;
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, image_completeHandler);
imageLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);

imageLoader.load(request,context);
}

private function image_completeHandler(event:Event):void
{
trace(" Image load Complete");
}

private function ioErrorHandler(event:IOErrorEvent):void
{
trace("ioErrorHandler: " + event);
}

最佳答案

我建议您拆分图像。如果您需要 Flash 将图像作为一个整体处理(移动、缩放),我会编写一个持有类,将图像片段添加为自身的子元素。

我在下面添加了一些代码和一个测试链接。查看运行中的代码 here . (等待 SWF 加载)。

//测试类

package
{
import com.kazumakzak.display.TileImage;

import flash.display.Sprite;
import flash.events.Event;

public class TestBigImage extends Sprite
{

[Embed(source="assets/piece.png")]
private var imageClass : Class;

private var _image : TileImage;
private var _counter : Number = 0;

public function TestBigImage()
{
// create image with tile size 640x480
_image = new TileImage(640, 480);

// add tiles at positions
_image.addTile(new imageClass(), 1, 1);
_image.addTile(new imageClass(), 1, 2);
_image.addTile(new imageClass(), 2, 1);
_image.addTile(new imageClass(), 2, 2);
_image.addTile(new imageClass(), 3, 1);
_image.addTile(new imageClass(), 3, 2);

// add to display list
addChild(_image);


addEventListener(Event.ENTER_FRAME, render);
}

private function render(event : Event) : void
{
_counter += 0.05;
_image.x = -640 + Math.cos(_counter) * 640
}
}
}

//TileImage.as
package com.kazumakzak.display
{
import flash.display.Bitmap;
import flash.display.Sprite;

public class TileImage extends Sprite
{

private var _tileWidth : int;
private var _tileHeight : int;

public function TileImage(tileWidth : int, tileHeight : Number)
{
_tileWidth = tileWidth;
_tileHeight = tileHeight;
}

public function addTile(source : Bitmap, tileX : int, tileY : int) : void
{
source.x = (tileX-1) * _tileWidth;
source.y = (tileY-1) * _tileHeight;

addChild(source);
}
}
}

关于apache-flex - 大图加载问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4264245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com