小编Jar*_*nce的帖子

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

我正在编写Starling的棋盘游戏(动作脚本3).我使用的Starling版本有一个名为Sprite3D的类,它允许我方便,轻松地编码在这个游戏中使用的卡片的翻转.我很困扰的事实是我的卡片在翻转时会改变尺寸,而我无法找到更改的来源.

所有帮助表示赞赏.

可以在此YouTube视频上查看问题.

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

我将继续更详细地介绍......视频中包含以下所有信息.

Card类不包含可视信息.它是一个控制器类.它确实拥有两个精灵.一个精灵填充正面,另一个精灵填充背面.Card类还应用了蒙版和尺寸属性,以使面具有相同的大小和形状.

Card类还包含动画代码.设置卡片动画的代码与在starling博客上发现的视频中使用的代码非常相似,该视频显示了如何在2D内存游戏中快速,轻松地实现Stage3D.Card类通过使用补间动画旋转,以将卡的rotationY属性从0 更改为PI,并在触摸事件上将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 : …
Run Code Online (Sandbox Code Playgroud)

sprite actionscript-3 starling-framework

12
推荐指数
1
解决办法
149
查看次数

为什么fstream不使用运算符的istream原型>>?

我有一个类使用友元函数来重载运算符>>.重载的操作符方法在标准cin使用上测试良好.但是,当我尝试升级代码以使用ifstream对象而不是istream对象时,原型不会被识别为有效方法.

我理解ifstream是从istream继承的,因此,多态应该允许ifstream对象与istream重载函数一起运行.我的理解有什么问题?

是否有必要为每个输入流类型复制函数?

类:

#include <iostream>
#include <cstdlib> 
#include <fstream>

using namespace std;

class Hospital {
public:
    Hospital(std::string name);
    std::string getName();
    void write();
    friend ostream & operator<<( ostream &os, Hospital &hospital );
    friend istream & operator>>( istream &is, Hospital &hospital );
private:
    void readFromFile( std::string filename );
    std::string m_name;
};
Run Code Online (Sandbox Code Playgroud)

功能实现:

istream &operator>>( istream &is, Hospital &hospital ){
    getline( is, hospital.m_name );
    return is;
}
Run Code Online (Sandbox Code Playgroud)

错误:

Hospital.cpp:在成员函数'void Hospital :: readFromFile(std :: string)':Hospital.cpp:42:24:错误:不匹配'operator >>'(操作数类型是'std :: ifstream {aka std :: basic_ifstream}'和'Hospital*')storedDataFile >> …

c++ fstream iostream

5
推荐指数
1
解决办法
295
查看次数