我在尝试正确地调整第三阶段的第三阶段中的off3d Gold和Starling时都遇到了问题。
我有4个starling实例和1个由stage3dProxys处理的Away3d实例。
这一切都在初始尺寸上完美。在浏览器中调整游戏大小时会出现问题。
游戏.swf最终将由另一个父.swf加载,但是当游戏直接加载到它自己的HTML模板上时,同样的事情就会发生。
我现在拥有的是:
stage.addEventListener( Event.RESIZE, onResize, false, 0, true );
private function onResize(event:Event):void {
_stage3DProxy.width = stage.stageWidth;
_stage3DProxy.height = stage.stageHeight;
}
它适用于starling实例,但不适用于远离3d实例。 并且它没有显示应该在舞台之外的切割图像。
我也尝试过不成功:
starling.stage.stageWidth = this.stage.stageWidth;
starling.stage.stageHeight = this.stage.stageHeight;
var viewPort:Rectangle = RectangleUtil.fit(
new Rectangle(0, 0, stage.stageWidth, stage.stageHeight),
new Rectangle(0, 0, stage.fullScreenWidth, stage.fullScreenHeight),
ScaleMode.NO_BORDER);
Starling.current.viewPort = viewPort;
我希望实现的是在将尺寸设置为“百分比”时将传感器设置为:"NO_BORDER"
并将对齐设置为:"Top Center"
,最小高度和宽度。< / p>
如何实现这一目标?
谢谢
马捷
答案 0 :(得分:3)
好吧,我发现重新调整大小的方法是更新视图。您可以将flash.display.Sprite
容器放置在添加了离开场景的位置或视图自定位中心或重新定位。
这是一个棘手的想法,因为你必须找出scaleX
&amp;的视图方法。 scaleY
是' DEAD END ,这意味着它们是空方法,不会发生任何变化。所以你真的必须&amp;只能更改width
&amp; height
属性。
此处列出View3D
的所有 DEAD END 方法,就像它们出现在源代码中一样:
// dead ends:
override public function set z(value : Number) : void {}
override public function set scaleZ(value : Number) : void {}
override public function set rotation(value : Number) : void {}
override public function set rotationX(value : Number) : void {}
override public function set rotationY(value : Number) : void {}
override public function set rotationZ(value : Number) : void {}
override public function set transform(value : Transform) : void {}
override public function set scaleX(value : Number) : void {}
override public function set scaleY(value : Number) : void {}
在团队实验之后,我们项目中的工作原理如下:
目标:重新调整背景大小,就像将尺寸设置为percentage
时缩放到NO_BORDER
并对齐到:{{1 }}
Top Center
答案 1 :(得分:1)
我认为你不能通过在stage3DProxy上设置width / height属性来调整away3d实例的大小。我通过在view3D上设置宽度/高度来实现这个:
view = new View3D();
//...later
private function stageResizeHandler(evt:Event):void
{
view.width = stage.stageWidth;
view.height = stage.stageHeight;
}