as3-在视图中将位图转换回矢量

时间:2018-10-20 16:55:00

标签: actionscript-3

所以我找到了一个V-CAM源,现在我正在使用它,但是很高兴,当凸轮查看位图的对象时,是否可以取消切换位图?例如,假设我有一个带有许多矢量艺术的矢量movieclip,我从IDE在movieclip上将导出切换为位图,现在可以将其添加到我的VCAM中了,其视图中的所有内容(都会调整舞台大小) )取消切换或重画回vector,而其余的map / movieclip仍在位图中?随着VCAM的迁移,从位图转换为矢量的内容又变回到位图了?

    var camColor: ColorTransform = new ColorTransform();
var parentColor: ColorTransform = new ColorTransform();
var cX: Number;
var cY: Number;
var sX: Number;
var sY: Number;
this.visible = false;
var oldMode: String = stage.scaleMode;
stage.scaleMode = StageScaleMode.EXACT_FIT;
cX = stage.stageWidth / 2;
cY = stage.stageHeight / 2;
sX = stage.stageWidth;
sY = stage.stageHeight;
stage.scaleMode = oldMode;
camColor = this.transform.colorTransform;
parentColor = this.parent.transform.colorTransform;
camControl(new Event(Event.ENTER_FRAME));
addEventListener(Event.ENTER_FRAME, camControl);
addEventListener(Event.REMOVED, resetStage);
function camControl(event: Event): void {
    camColor = this.transform.colorTransform;
    parent.transform.colorTransform = camColor;
    var xScale: Number = sX / this.width;
    var yScale: Number = sY / this.height;
    parent.x = cX - (this.x * xScale);
    parent.y = cY - (this.y * yScale);
    parent.scaleX = xScale;
    parent.scaleY = yScale;
}
function resetStage(event: Event): void {
    removeEventListener(Event.ENTER_FRAME, camControl);
    parent.transform.colorTransform = parentColor;
    parent.scaleX = 1;
    parent.scaleY = 1;
    parent.x = 0;
    parent.y = 0;
}

1 个答案:

答案 0 :(得分:0)

我认为您最好使用位图尺寸更大(2x-4x)的另一台摄像机,以从您觉得过于像素化的矢量中渲染那些场景。在导出方面,只需将字符的位图导出2到4倍大,或者可以将其作为矢量放置在应用程序中的某个位置(可能是隐藏的),并在需要时进行实时渲染,或者将其作为矢量简单地显示在显示列表中而不是位图。

如果需要在基于位图的引擎中添加一些复杂的矢量形式,则可以使用各种姿势/旋转的单个源的实时位图绘制,然后使用这些渲染的位图来获得性能。查看游戏“谜:恒星战争”中的这项技术,它在过程中的外观如何(提示:当显示“正在加载老板”时,它将在幕后进行所有渲染)。

从位图获取向量化的源代码要比将现成的向量化的源代码存储在某处的处理器消耗更多。同样,您也不会以精确的形式恢复原始矢量,因为将矢量转换为位图是有损的转换。