Функция C не принимает 2 аргумента

#c 11 #visual-studio-2013 #cocos2d-x

#c 11 #visual-studio-2013 #cocos2d-x

Вопрос:

Я следую руководству по созданию видеоигры с использованием C . И я застрял на этом шаге:

 spriteBg -> setAnchorPoint(0,0);
 

У меня ошибка: функция не принимает 2 аргумента

Но опорные точки обычно представляют собой пару из двух цифр (x, y) или Vec2::ZERO в соответствии с документами, так что же не так с этой строкой?

У парня в руководстве есть красная изогнутая линия под вторым 0, а у меня есть эта красная линия под моим вторым нулем в setAnchorPoint (0,0), тем не менее, он может построить проект без ошибок, но я не могу из-за этой ошибки в 2 аргумента.

Он использует Visual Studio 2012, а я использую Visual Studio 2013, чего бы это ни стоило. Проект был сгенерирован с помощью Cocos2d.

Это весь метод.

 bool HelloWorld::init()
{


    if ( !Layer::init() )
    {
        return false;
    }

    auto spriteBg = Sprite::create("images/bg.png");
    spriteBg ->setAnchorPoint(0,0);
    spriteBg ->setPosition(0,0);
    addChild(spriteBg , 0);

    return true;
}
 

Это вся ошибка:

 error C2660: 'cocos2d::Sprite::setAnchorPoint': function does not take 2 arguments
 

Пока тот же результат с 5 подходами:

 spriteBg ->setAnchorPoint(0,0);
spriteBg ->setAnchorPoint({0,0});
spriteBg ->setAnchorPoint(Vec2::ZERO);
spriteBg ->setAnchorPoint(Vec2(0,0));
spriteBg ->setAnchorPoint(Point(0,0));
 

Это руководство, и этот конкретный шаг находится в 18:27. Учебник на испанском языке, но вы ясно видите, как парень кодирует, и это всего несколько строк.

https://www.youtube.com/watch?v=v7d3ic_lmGw

Приветствую.

Комментарии:

1. Можете ли вы опубликовать весь свой код? Также, как случайное предположение, попробуйте setAnchorPoint({0, 0}) .

2. Конечно, но метод в значительной степени таков: bool HelloWorld::init() { if ( ! Layer::init() ) { возвращает false; } auto spriteBg = Sprite::create(«images/bg.png»); spriteBg ->setAnchorPoint(0,0); spriteBg ->setPosition(0,0); addChild(spriteBg, 0); возвращает true; }

3. Пожалуйста, дайте ссылку на учебное пособие. Возможно, кто-то сможет заметить разницу.

4. Та же ошибка с 3 подходами: spriteFondo-> setAnchorPoint(Vec2::НОЛЬ); spriteFondo-> setAnchorPoint({0,0}); spriteFondo-> setAnchorPoint(0,0);

5. Конечно, Спенсер. Учебное пособие на испанском языке, но вы можете увидеть, как парень кодирует, и эта конкретная часть находится в 18:27. youtube.com/watch?v=v7d3ic_lmGw

Ответ №1:

Не уверен, в чем проблема, без точного сообщения об ошибке, но если вы скажете, что для этого требуется Vec2::ZERO, возможно, попробуйте:

spriteBg -> setAnchorPoint(Vec2(0,0));

Комментарии:

1. Та же ошибка с 4 подходами: spriteBg-> setAnchorPoint(Vec2::НОЛЬ); spriteBg-> setAnchorPoint(Vec2(0,0)); spriteBg-> setAnchorPoint(0,0); spriteBg-> setAnchorPoint({0,0}));

2. Не могли бы вы скопировать и вставить весь вывод ошибки, пожалуйста?

3. Конечно. ошибка C2660: ‘cocos2d::Sprite::setAnchorPoint’: функция не принимает 2 аргумента

4. Я не знаком с cocos2d, но, согласно документам , вам нужно передать ему точку. Может быть, попробуйте: spriteBg-> setAnchorPoint(точка (0,0));

5. Та же ошибка и с этим appoach, кажется, что все эти способы являются двумя аргументами, которые являются точкой привязки, но по иронии судьбы ошибка возникает из-за двух аргументов в функции, которым требуется как минимум 2 аргумента:( spriteFondo-> setAnchorPoint(Point(0,0)));

Ответ №2:

Как ясно указано в вашей ошибке: — ошибка C2660: ‘cocos2d::Sprite::setAnchorPoint’: функция не принимает 2 аргумента

она принимает только один аргумент типа ‘Vec2’. Попробуйте spriteBg -> setAnchorPoint(Vec2(0,0));

Ответ №3:

Перейдите к определению sprite и посмотрите на определение функции для setAnchorPoint . В зависимости от того, какую версию Cocos2D-x вы используете, я точно знаю, что setAnchorPoint принимает объект Vec2.

Ответ №4:

Параметром setAnchorPoint в cpp должна быть точка (Vec2). Конечно, вы получите сообщение об ошибке, если параметры равны двум числам.

Легко понять ошибку, проверив объявление функции.

Ответ №5:

Не уверен, что это работает полностью, попробуйте использовать:

 sprite->setAnchorPoint(ccp(0,0));