0

私はタイル マップ レンダラーで作業しており、別のファイルで別のクラスを作成しようとしました。次のエラー メッセージが表示されます。

Type Error: 'renderer' object is not callable

render.py ファイルは次のとおりです。

import pyglet, json
from pyglet.window import key
from pyglet.gl import *
from ConfigParser import SafeConfigParser
from cocos.layer import *
from cocos.batch import *
from cocos.sprite import Sprite

class renderer( Layer ):
    def __init__(self, mapname):
        super( renderer, self ).__init__()
        parser = SafeConfigParser()
        try:
            world = parser.read('maps/'+mapname+'.txt')
            print world
        except IOError:
            print("No world file!")
            return
        layer = json.loads(parser.get('layer1', 'map'))
        tiletype = parser.get('type', 'tile')
        print tiletype
        tilesize = 64

        for x in range(0, len(layer)):
            for y in range(0, len(layer[x])):
                self.spr = Sprite("image/tiles/"+tiletype+"/"+str(layer[x][y])+".png")
                self.spr.position = ((x+1)*tilesize, (y+1)*tilesize)
                self.add(self.spr)

そして、これは私がそれを呼び出すコードです:

from other.render import renderer

 

world = renderer('buildnew')
world()

ファイル構造:

game/main.py
game/other/render.py

私は何を間違っていますか?

4

1 に答える 1

0
world = renderer('buildnew')
world()

まず、レンダラー クラスのインスタンスを作成し、それをワールドに格納します。しかし、world()このオブジェクトは呼び出し可能ではないため、これは間違っています。world呼び出し可能なオブジェクトを作成する場合は、__call__メソッドをレンダラー クラスに実装する必要があります。

于 2013-01-23T20:08:05.420 に答える