Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 是什么导致此卡更改尺寸?[视频和代码]_Actionscript 3_Sprite_Starling Framework - Fatal编程技术网

Actionscript 3 是什么导致此卡更改尺寸?[视频和代码]

Actionscript 3 是什么导致此卡更改尺寸?[视频和代码],actionscript-3,sprite,starling-framework,Actionscript 3,Sprite,Starling Framework,我正在用Starling编写一个棋盘游戏(动作脚本3)。我正在使用的Starling版本有一个名为Sprite3D的类,它可以让我方便、轻松地对游戏中使用的纸牌翻转进行编码。我的卡在翻转时会改变维度,这让我很困扰,我找不到改变的来源 感谢所有的帮助 这个问题可以在计算机上查看 代码可以在github上完整地看到 我将在这里继续介绍更多细节。。。视频中涵盖了以下所有信息 Card类不包含任何可视信息。它是一个控制器类。它确实能装两个精灵。一个精灵填充正面,另一个精灵填充背面。卡片类还应用了遮罩和维

我正在用Starling编写一个棋盘游戏(动作脚本3)。我正在使用的Starling版本有一个名为Sprite3D的类,它可以让我方便、轻松地对游戏中使用的纸牌翻转进行编码。我的卡在翻转时会改变维度,这让我很困扰,我找不到改变的来源

感谢所有的帮助

这个问题可以在计算机上查看

代码可以在github上完整地看到

我将在这里继续介绍更多细节。。。视频中涵盖了以下所有信息

Card类不包含任何可视信息。它是一个控制器类。它确实能装两个精灵。一个精灵填充正面,另一个精灵填充背面。卡片类还应用了遮罩和维度属性,以便面具有相同的大小和形状

Card类还保存动画代码。制作卡片动画的代码与starling博客上的视频中使用的代码非常相似,该视频展示了Stage3D如何在2D内存游戏中快速、轻松地实现。卡片类通过使用tween将卡片的
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 );