Ios 在cocos 2dx中获得精灵的纹理

Ios 在cocos 2dx中获得精灵的纹理,ios,cocos2d-x,game-engine,Ios,Cocos2d X,Game Engine,我已经开发了Cocos2DX游戏,其中我正在Sprite中运行animation,我想在其中获取当前的纹理名称,为此我尝试了以下代码: CCSpriteFrame *frameN = fisherManBoat->displayFrame(); frameName = frameN->_textureFilename; 但它给了我一个错误,textureFilename受到保护,所以我如何解决它?如果它不起作用,那么我还能尝试什么?因为屏幕上有一个按钮,我可以在上面点击并运行动

我已经开发了
Cocos2DX
游戏,其中我正在
Sprite
中运行
animation
,我想在其中获取当前的
纹理名称
,为此我尝试了以下代码:

CCSpriteFrame *frameN =   fisherManBoat->displayFrame();
frameName = frameN->_textureFilename;

但它给了我一个错误,
textureFilename
受到保护,所以我如何解决它?如果它不起作用,那么我还能尝试什么?因为屏幕上有一个按钮,我可以在上面点击并运行动画,所以我想使它平滑。所以,如果动画在再次录制时处于中间位置,它不会再次开始,而是从当前点开始

如果要访问_textureFilename变量,则需要修改CCSpriteFrame.h文件

首先,您需要在CCSpriteFrame.h文件中找到此代码

protected:
    Vec2 _offset;
    Size _originalSize;
    Rect _rectInPixels;
    bool   _rotated;
    Rect _rect;
    Vec2 _offsetInPixels;
    Size _originalSizeInPixels;
    Texture2D *_texture;
    std::string  _textureFilename;
    PolygonInfo _polygonInfo;
并从下面的代码行中删除

std::string  _textureFilename;
现在,您必须将其粘贴到定义公共作用域的CCSpriteFrame.h文件的顶部

class CC_DLL SpriteFrame : public Ref, public Clonable
{
public:

    std::string  _textureFilename;

我希望它能帮助你。谢谢。

是否将文件名/纹理保存在矢量实例变量中?您可能还需要一个索引实例变量,以便知道向量中的哪个元素当前正在使用。但是,我如何获得精灵的当前动画帧呢@但是,当你设置它时,你就会知道它。在您定义当前框架时,它是什么并不神秘。这是一个非常糟糕的想法,并且会导致一个永无休止的维护问题,几乎没有什么好处。我只是为您提出的问题提供一个简单的解决方案。如果您有更好的解决方案,请回答。@trojanfoe.Thank you@RutudhvajPatelMost Welcome@WaleedAhmed