나는 내 게임을위한 쉐이더를 시각화하기위한 도구를 해킹하려고 시도 했었고 파이썬과 코코아를 사용하려고 시도했다. 나는 벽돌 벽에 부딪쳤다. 아마도 그 객관적인 C의 이해하지만 난 작업을 작성하려고 한 볼이 코드를 얻을 수없는 것 다소 빈약 한 내 : 실행될 때PyObjc 코코아 뷰 클래스가 필드를 잊어 버리는 이유는 무엇입니까?
from objc import YES, NO, IBAction, IBOutlet
from Foundation import *
from AppKit import *
import gv
class SceneView(NSOpenGLView):
def __init__(self):
NSOpenGLView.__init__(self)
self.renderer = None
def doinit(self):
self.renderer = gv.CoreRenderer()
def initWithFrame_(self, frame):
self = super(SceneView, self).initWithFrame_(frame)
if self:
self.doinit()
print self.__dict__
return self
def drawRect_(self, rect):
clearColor = [0.0,0.0,0.0,0.0]
print self.__dict__
self.renderer.clear(CF_Target|CF_ZBuffer,clearColor)
그것은이를 출력합니다
{'renderer': <gv.CoreRenderer; proxy of <Swig Object of type 'GV::CoreRenderer *' at 0x202c7d0> >}
{}
2009-04-03 19:13:30.941 geom-view-edit[50154:10b] An exception has occured:
Traceback (most recent call last):
File "/System/Library/Frameworks/Python.framework/Versions/2.5/Extras/lib/python/PyObjCTools/AppHelper.py", line 235, in runEventLoop
File "/mnt/gilead/amcharg/projects/geom-view-edit/build/Debug/geom-view-edit.app/Contents/Resources/SceneView.py", line 37, in drawRect_
self.renderer.clear(CF_Target|CF_ZBuffer,clearColor)
AttributeError: 'SceneView' object has no attribute 'renderer'
것 같다 initWithFrame_ 코드가 얼마나 펑키한지 생각해 보면 그리 놀랍지 않은 렌더러 변수를 잃어 버릴 수 있습니다.하지만 이것은 객관적인 C가 alloc 이디엄과 별도로 init를 가지고 있기 때문에 xcode가 생각하는 것처럼 보였습니다. 그러나 여전히 파이썬을 보는 것은 이상합니다.
어쨌든 이것을 구제 해줄 것인가? 아니면 코드 창고에서 QT 또는 wxPython을 사용해야합니까? 나는 목표 - C를 사용하여 생각하지만, 난 그냥 컴파일이 멋진 꿀꺽 꿀꺽 바인딩 =)
나는 wxPython을 사용한다고 말하고 나서 리눅스 boxen에서도 실행할 수있다. :-) – Benson
나는 wxPython을 보았다. 그렇다면 나는 눈을 피우지 않기 위해 몇 가지 조언을해야만했다. 나는 그것을 최후의 수단으로 사용할 것이다. –