Actionscript 3 是什么导致此卡更改尺寸?[视频和代码]
我正在用Starling编写一个棋盘游戏(动作脚本3)。我正在使用的Starling版本有一个名为Sprite3D的类,它可以让我方便、轻松地对游戏中使用的纸牌翻转进行编码。我的卡在翻转时会改变维度,这让我很困扰,我找不到改变的来源 感谢所有的帮助 这个问题可以在计算机上查看 代码可以在github上完整地看到 我将在这里继续介绍更多细节。。。视频中涵盖了以下所有信息 Card类不包含任何可视信息。它是一个控制器类。它确实能装两个精灵。一个精灵填充正面,另一个精灵填充背面。卡片类还应用了遮罩和维度属性,以便面具有相同的大小和形状 Card类还保存动画代码。制作卡片动画的代码与starling博客上的视频中使用的代码非常相似,该视频展示了Stage3D如何在2D内存游戏中快速、轻松地实现。卡片类通过使用tween将卡片的Actionscript 3 是什么导致此卡更改尺寸?[视频和代码],actionscript-3,sprite,starling-framework,Actionscript 3,Sprite,Starling Framework,我正在用Starling编写一个棋盘游戏(动作脚本3)。我正在使用的Starling版本有一个名为Sprite3D的类,它可以让我方便、轻松地对游戏中使用的纸牌翻转进行编码。我的卡在翻转时会改变维度,这让我很困扰,我找不到改变的来源 感谢所有的帮助 这个问题可以在计算机上查看 代码可以在github上完整地看到 我将在这里继续介绍更多细节。。。视频中涵盖了以下所有信息 Card类不包含任何可视信息。它是一个控制器类。它确实能装两个精灵。一个精灵填充正面,另一个精灵填充背面。卡片类还应用了遮罩和维
rotationY
属性从0更改为PI,并在触摸事件时从PI更改为0来设置旋转动画。错误发生在翻转过程中,因此我将在此处包括翻转代码:
public function flip() : void {
_state = !(this._state);
if( this.animations ){
var tween : starling.animation.Tween = new Tween( this, 2, starling.animation.Transitions.EASE_OUT_BOUNCE );
var card : Card = this;
var didFlip : Boolean = false;
tween.animate("rotationY", this._state == Card.FACE_UP ? Math.PI : 0 );
tween.onUpdate = updateVisibility;
Starling.juggler.add( tween );
}
}
private function updateVisibility():void
{
var sHelper:Vector3D = new Vector3D();
var card : Card = this;
stage.getCameraPosition( card, sHelper );
if( sHelper ){
this._front_face.visible = sHelper.z < 0;
this._back_face.visible = sHelper.z >= 0;
}
}
在函数的其余部分,我们创建并显示文本。为了简单起见,我不在这里包含该代码。在测试过程中,我删除了该代码,并发现它对翻转到正面时改变卡片尺寸的特殊行为没有影响
有没有人见过Sprite3D上的遮罩不能作为遮罩使用的情况
有没有人见过面具无法在普通精灵对象上执行的情况
当Tween用于更改对象上“rotationY”的值时,Tween.animate()方法可能会导致奇怪的行为
任何和所有的答案都会有帮助。谢谢大家! 已修复!!!!!我找到了 我发现问题不在前面。我在卡片上加了一个遮罩,那就是Sprite3D对象。那个面具引起了问题。当我移除它时,背面(精灵对象)扩展到与正面相同的大小,现在当我设置卡片尺寸时,两个面的大小相同 我已将卡尺寸更新为400x250,以匹配原始背面布局,现在一切正常 提示:尽可能在精灵对象而不是精灵3D对象上设置遮罩。这将在二维对象上保留二维操作
//we remove the event listener so this function code is only executed once
this.removeEventListener( Event.ADDED_TO_STAGE, onAddedToStage );
var width : int = this.cardWidth; /* 400 */
var height : int = this.cardHeight; /* 300 */
var bg : Image = new Image( Game.assets.getTexture("blank") );
/* start the background in the top left */
bg.x = 0;
bg.y = 0;
/* have the background fill the card dimension space */
bg.width = width;
bg.height = height;
/* apply a color so that the background is not pure white */
bg.color = ColorScheme.OPAL;
/* add the background to the stage */
this.addChild( bg );