0

我有两个调用相同父函数的子类。

一个工作正常,但它的第二个调用不能越界al_convert_mask_to_alpha

我又一次被迷惑了。

有谁知道为什么会发生这种情况?

下面的函数是它们都调用的函数。与上面两者的声明。

Monster* the_monster = new Monster("chard", 10, 10, "assets/monstertrans.bmp");
Hero* the_hero = new Hero(1, "Player", 20, 20, "assets/hero.bmp");

the_monster->Display();
the_hero->Display();


void Creature::Display(void)
{
    //creating the bitmap
    al_init_image_addon(); //allegro image addon

    //FORGETTING THIS LINE WAS A SILLY IDEA!!!!
    creature_bit = al_load_bitmap(m_filename.c_str()); 

    al_convert_mask_to_alpha(creature_bit, al_map_rgb(255,0,255));

    al_draw_bitmap(creature_bit, m_xpos, m_ypos, 0);

    if (!creature_bit)
    {
        cout << "creature creation failed!" << endl;
        cout << "Any key to exit" << endl;
        _getch();
    }
}
4

1 回答 1

0

您的代码组织得不是很好。

  • 初始化插件应该只在程序启动时发生一次
  • 加载位图应该作为对象构造函数的一部分进行(或紧随其后,仅一次)
  • 应该每帧绘制一次位图(与更新生物的 x/y 数据的逻辑分开)

这些都属于不同的方法。

如果creature_bitnull,那么您应该阅读这篇文章,因为它包含您需要了解的有关如何正确加载位图的所有信息。

于 2013-11-11T19:10:19.920 回答