【问题标题】:As3 change object width/height, then set new size scale as 1As3 更改对象的宽度/高度,然后将新的大小比例设置为 1
【发布时间】:2014-07-01 02:28:54
【问题描述】:

我有一个对象操作函数,它(现在)操作数组内对象的比例,以提供彼此相关的实时大小变化。

我想知道是否有办法更改对象的宽度/高度(以适应屏幕尺寸,因为它是一个移动应用程序)然后重置比例,以便新的宽度/高度具有 scaleX/scaleY值为 1。

【问题讨论】:

  • 一种可能的想法是将对象放在某个容器对象中并缩放容器。然后对象将保留 scaleX/Y 值 1。
  • 我宁愿避免创建不必要的容器对象,但如果无法将对象比例重置为新的宽度/高度,这是最好的解决方案。谢谢。
  • 重绘对象,特别是如果它只是一个图元(矩形等)。

标签: actionscript-3 actionscript scale


【解决方案1】:

宽度/高度是直接影响 DisplayObject 比例的属性。你不能在不影响比例的情况下调整它的大小。

但是你可以:

  • 将图像绘制为位图
  • 如果是图元则重绘
  • 将其放入支架中

关于每个解决方案的一点点:

通过创建 BitmapData 并使用 draw() 调用来绘制 DisplayObject(或任何 IBitmapDrawable)。好处是它将是一个位图,因此可以节省一些渲染时间。缺点是,如果它是一张大图像,它会占用内存(对于移动设备来说可能很重要),并且除非你制作一个可以读取动画的脚本,否则它不会具有交互性/动画效果。

如果您通过 Graphics 类的 API 绘制元素,您可能只需创建一个类似 resize() 方法的东西,您可以在窗口调整大小/翻转方向上调用该方法。只需利用 Graphics 对象的 clear() 方法并重绘整个事物。

最后,可能是您的最佳选择。调整对象的大小。制作一个新的 Sprite(我选择 Sprite,因为它是交互式的,您可能希望这样做)并将调整大小的对象添加到新制作的 Sprite,而 Sprite 只是添加到显示列表中,就像您之前添加调整大小的对象一样。如果很难理解,这里有一些代码:

myResizeableObject.width = newWidth;
myResizeableObject.scaleY = newScaleY;

var holderSprite:Sprite = new Sprite();
myResizeableObject.parent.addChild(holderSprite); // if you don't have a specific place to add the myResizeableObject, don't use myResizeableObject.parent - it's ugly
holderSprite.addChild(myResizeableObject);

希望对你有所帮助!

【讨论】:

    猜你喜欢
    • 2018-05-06
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 2015-04-27
    • 1970-01-01
    • 2013-03-13
    • 2015-12-09
    相关资源
    最近更新 更多