• @crazy666 said:

    Hello i have a question ...
    what is the difference between frame and scene?
    i'm desperate i don't know how to restart
    What is the best to start ?
    Create view class and after add fonction?
    Or what is the best strategy for write

    I don't want use ui editor becose i want understand structure

    Thanks for help me !!


    in the instance of ui module is a Rect that we talked about last time and if i understand correctly, does some initial calculation when object is created.

    x y width hieght bounds
    so on.. scene

    This is a complete, actually a chain of, modules for bridging Pythonista with SceneKit from Apple. it has many connections with the ui module. the class Scene that your MyScene class dirives from is itself a sub-class of SceneView from ui. with this said you can alternativle write a ui project and make one View element sub-class SceneView and write a MyScene class then set your MySceneView.scene = MyScene() and this allows you to present your scene in your ui other than forcing fullscreen.

    so for this part,

    frame is an attribute of ui.View (scene nodes you generally set the Node.position and Node.size. position being a Point object and size a Size object. i belive even if you pass a normal 2tuple scene should convert to object needed but i find its much cleaner and good practice to just explucitly instance the object.
    hint: MySprite.position = MyScene.size/2 willconvert the Size object to Point object while setting sprite to center of screen 😉🤓

    scene is a module for animations and Game Development. not limited to though.. see here for documentation on scene module.

    I personally suggest you learn scene then continue with ui while using SceneView. but its really up to whats comfortable for you buddy..

    my typical path i take is similar to following for starting scene projects...
    -import my standart modules..

    inside a core.py i place all my imports. including my from scene import *.

    wrighy out mt factory functions..

    functions that creat my nodes and other objects. this helps maintain consistency and reduce programer error from typos.. ⤹⤹⤹

    example... #explicitly i pass Point and Size objects.. #leave out size for LabelNode to allow autosizeing ⤶ #to font and string sizes.. def new_label(text=None, point=None, size=None, parent=None, font=('Helvetica', 16)): label = scene.LabelNode( text=text, font=font, position=point, size=size, parent=parent, anchor_point=(0.5, 0.5) ) # ... add logic for creating all labels ... return label now inside main script... from core import * w, h = get_screen_size() class MyScene(Scene): def __setup__(self, *args, **kwargs): self.score = 0 self.score_display = new_label(self.score, Point(w/2, h-50), Size(150, 45), self)

    *note: im using scene from core.py instead of importing in both.. this allows me to creat scene objects in core.py without doing from scene import ... for everything i use. if both scripts core and main did from scene import * the interpreter will not import core.py. with message cannot import core.

    from here sky is the limit!

    i hope this helps you in what you needed


    using UI Builder wont effect your path in learning structure. it only give a visual interactive way to set up the ui. you can still programatically set properties and have a custom view class..

  • @mikael

    Thank you. I guess I need to dial back my goals

  • @BGKirkham, something wrong with the spam filter recently.

    You need to jump through another hoop and turn it into a gist, so that you can just share the link.

  • @shinyformica, gist seems good if it is clear that it is not going to need many revisions, issues, a Readme or collaboration. Otherwise, a git repo is not that much more work.

  • Good point about this only getting called when keyboard is first shown. Ideally, you would attach textfield did_begin_editing delegates that scroll the textfield to the top of the scroll view. Even if you don't own those, you could basically store the original delegate within your custom delegate, and then call the original delegate methods after you scroll into place.

  • @omz Thank you.

  • @brumm thx. Looks like this can be a good way to fix it

  • @ccc Thank you for your response, gonna try it later at home.
    Ok Good to know for next time

  • Thanks a lot both. All the different solutions are working.

Internal error.

Oops! Looks like something went wrong!