您好,我想制作一张欧洲的 Flash 地图,当您将鼠标悬停在每个国家/地区之外时,会发生一些事情,例如更改该国家/地区的颜色。
看到这张图片
如果我先翻过挪威,然后翻过瑞典,瑞典不会被设置为蓝色,因为挪威的边界框在瑞典的顶部,所以我必须往低一点的地方翻过与挪威不相交的瑞典。
有没有更好的方法来实现相同的功能?就像使用位图像素一样。
我有一个 png 格式的所有硬币的精灵表。我嵌入了这个精灵表,然后创建了使用 copyPixels() 从精灵表复制到 innet 变量 BitmapData 的 Sprite AS3 类。
这是我的课
public class Country extends Sprite
{
private var newBitmap:Bitmap;
private var tintColor:Color = new Color();
public function Country(bitmapData:BitmapData)
{
newBitmap = new Bitmap(bitmapData);
tintColor.setTint (0x0000ff, 0.6);
this.useHandCursor = true;
this.buttonMode = true;
addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event):void
{
addChild(newBitmap);
addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
addEventListener(MouseEvent.MOUSE_OUT, onMouseOut);
}
private function onMouseOver(e:MouseEvent = null):void
{
newBitmap.transform.colorTransform = tintColor;
}
private function onMouseOut(e:MouseEvent = null):void
{
newBitmap.transform.colorTransform = new ColorTransform();
}
}
bitmapData 是在运行时使用 copyPixels() 像这样创建的
var countiresArray:Array = Resources.allCointriesJSON["frames"];
var newX:Number = countiresArray[i]["frame"]["x"];
var newY:Number = countiresArray[i]["frame"]["y"];
var newW:Number = countiresArray[i]["frame"]["w"];
var newH:Number = countiresArray[i]["frame"]["h"];
bitmapData .copyPixels(Resources.allCountries.bitmapData, new Rectangle(newX, newY, newW, newH), new Point(0, 0));
其中 newX、NewY、newW 和 newH 取自使用 TexturePacker 时创建的导出 JSON 文件