#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));