Actionscript 3 AS3位图对象在低比例值下不平滑
我需要帮助得到一个位图应用平滑后,被缩放非常小 我现在正在做的是加载一个带有加载器对象的.png图像。加载文件后,我将loaderInfo的内容转换为位图,并将平滑值设置为true。在ScaleX和ScaleY值小于0.5之前,这不会有任何问题 例如,如果我有一个1000x1000对象,将其缩小到200x200会导致位图平滑不再工作 我可以使用以下所有大小调整方法重现问题:Actionscript 3 AS3位图对象在低比例值下不平滑,actionscript-3,flash,apache-flex,bitmap,flex-spark,Actionscript 3,Flash,Apache Flex,Bitmap,Flex Spark,我需要帮助得到一个位图应用平滑后,被缩放非常小 我现在正在做的是加载一个带有加载器对象的.png图像。加载文件后,我将loaderInfo的内容转换为位图,并将平滑值设置为true。在ScaleX和ScaleY值小于0.5之前,这不会有任何问题 例如,如果我有一个1000x1000对象,将其缩小到200x200会导致位图平滑不再工作 我可以使用以下所有大小调整方法重现问题: 更改位图上的scaleX和scaleY属性 直接更改位图的高度和宽度属性 将位图作为另一个精灵的子对象添加,并更改精灵的
- 更改位图上的scaleX和scaleY属性李>
- 直接更改位图的高度和宽度属性李>
- 将位图作为另一个精灵的子对象添加,并更改精灵的scaleX和scaleY属性李>
- 将位图作为另一个精灵的子对象添加,并更改精灵的高度和宽度属性李>
- 创建具有矩阵比例的新BitmapData对象,然后在其上绘制原始BitmapData
- 将图像的scaleX设置为1.001或0.999
- 强制位图对象的高度和宽度为偶数
- 缩放为2的幂的大小,原始大小也是2的幂
- Mipmapping是游戏行业流行的一个术语,用于制作图像的多个缩放版本,以减少缩放混叠。(特别是对于尺寸的急剧变化)
- 作为对Flash Player 10的攻击,请将“z”属性设置为1。这将启用位图的硬件平滑,但会消耗更多内存和性能
stage.quality
属性设置为StageQuality.BEST
可以增强缩放位图的平滑效果。通过BitmapData.draw()
创建BitmapData
的较小副本并缩放副本,始终可以解决此问题。这需要一些逻辑来创建拷贝和切换位图。位图数据。谢谢提示。)我确实尝试过这个方法,但它不能很好地适应我当前的渲染架构。如果情况变得更糟,我会想办法解决的。我不得不把项目的这一部分搁置几天。一旦我回到它,我会给z属性一个尝试。谢谢你的意见。(此外,我无法将源图像更改为2的幂次,但我可能能够在应用缩放之前使用新的2维幂次位图数据绘制图像的居中副本。这与我在上述注释中描述的架构挑战相同)更改Z属性会删除图像中的所有平滑,使问题变得更糟。我正在使用(并瞄准)flash player 11。我发现原始帖子中的评论是唯一可行的解决方法,因为源图像不能保证为2的幂。我熟悉mipmapping,iirc它在id tech 1中用于他们专有的纹理格式。可能今天还在用。但是,这不是一个选项,因为我无法控制源图像。但是渐进缩放的使用看起来确实像是mipmapping的一种形式。+1不知道z属性强制“a”平滑,谢谢。
public class MainObj
{
public var comp:UIComponent;
public function MainObj()
{
}
public function LoadContent():void
{
var str:String = "testimage.png";
var l:Loader = new Loader();
l.contentLoaderInfo.addEventListener(Event.COMPLETE, LoadContentComplete);
l.load(new URLRequest(str));
}
public function LoadContentComplete(e:Event):void
{
var li:LoaderInfo = e.target as LoaderInfo;
var bmp:Bitmap = li.content as Bitmap;
bmp.smoothing = true;
bmp.scaleX = 0.2;
bmp.scaleY = 0.2;
comp.addChild(bmp);
}
}
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
minWidth="955" minHeight="600"
width="800" height="600">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
private var mainObj:MainObj;
override protected function initializationComplete():void
{
mainObj = new MainObj();
mainObj.comp = comp;
mainObj.LoadContent();
super.initializationComplete();
}
]]>
</fx:Script>
<s:VGroup width="100%" height="100%">
<mx:UIComponent id="comp" width="100%" height="100%"/>
</s:VGroup>
</s:Application>