Doesn't look too bad... so the slowness must be either in the GameButton itself or something connected to the the fieldCreated() signal.
Can you push the whole code to some repository? I would be willing to give it a shot and try to find out whats going wrong. On Thursday 18 April 2013 18:32:53 Николай Шатохин wrote: > I did this: > > Grid > > { > > id: grid > > anchors.centerIn: parent > > rows: 4 > > columns: 4 > > spacing: __buttonRightMargin > > Repeater > > { > > id: buttons > > > GameButton > > { > > row: index % __gameFieldWidth > > column: index / __gameFieldWidth > > width: __buttonWidth > > height: __buttonHeight > > } > > } > > } > > > onCreateField: > > { > > grid.rows = fieldHeight; > > grid.columns = fieldWidth; > > buttons.model = fieldWidth * fieldHeight; > > > fieldCreated(fieldWidth, fieldHeight); > > } > > > Now, I don't see buttons from old field if I start new game with > smaller field, but it still so slow. > > > > 2013/4/16 Николай Шатохин <n.shatok...@gmail.com> > > > Nope, but very similar by interface > > > > > > 2013/4/16 Roman Shchekin <mrqt...@gmail.com> > > > >> MineSweeper? > >> > >> > >> 2013/4/16 Michael Zanetti <michael.zane...@canonical.com> > >> > >>> On Tuesday 16 April 2013 18:54:01 Michael Zanetti wrote: > >>> > As a rule of thumb, you should be able to write more than 90% of your > >>> > application without the need to the work "function" (game logic > >>> > >>> excluded). > >>> > >>> That should have been: ... without the need to use the word > >>> "function"... > >>> > >>> Regards, > >>> Michael > >>> > >>> > > 2013/4/16 Rick Spencer <rick.spen...@canonical.com> > >>> > > > >>> > > > I suppose you would use a loader for the Repeater. After you make > >>> > >>> your > >>> > >>> > > > repeater work for your first level, you can use QtCreator to wrap > >>> > >>> the > >>> > >>> > > > Repeater in a loader for you. Then I think for each level you > >>> > > > would > >>> > > > destroy the whole Repeater and then use the loader to create a new > >>> > >>> one > >>> > >>> > > > with the new model for the next level. > >>> > > > > >>> > > > At least that is the approach I would take starting out. > >>> > > > > >>> > > > HTH > >>> > > > > >>> > > > Cheers, Rick > >>> > > > > >>> > > > On Tue, Apr 16, 2013 at 7:31 AM, Николай Шатохин < > >>> > >>> n.shatok...@gmail.com> > >>> > >>> > > > wrote: > >>> > > > > When I create button I assign destroy signal to each. So, when I > >>> > >>> start > >>> > >>> > > > new > >>> > > > > >>> > > > > game, I destroying buttons from old game and see old field in > >>> > >>> this > >>> > >>> > > > moment - > >>> > > > > >>> > > > > destroing slow too. Is quickly removing possible? Can I destroy > >>> > > > > repeater? > >>> > > > > > >>> > > > > > >>> > > > > 2013/4/16 Николай Шатохин <n.shatok...@gmail.com> > >>> > > > > > >>> > > > >> Oh, I didn't know that. I'll try. > >>> > > > >> > >>> > > > >> > >>> > > > >> 2013/4/16 Rick Spencer <rick.spen...@canonical.com> > >>> > > > >> > >>> > > > >>> Hi. > >>> > > > >>> > >>> > > > >>> I'm not sure how your code flows overall, but if you are > >>> > >>> creating > >>> > >>> > > > >>> all > >>> > > > > >>> > > > the > >>> > > > > >>> > > > >>> buttons at once, you might consider using a Repeater instead > >>> > > > >>> of > >>> > > > >>> doing > >>> > > > > >>> > > > it all > >>> > > > > >>> > > > >>> in javascript. > >>> > > > >>> > >>> > > > >>> It looks like you might have some kind of list that fires a > >>> > > > > >>> > > > createButton > >>> > > > > >>> > > > >>> signal. You could potentially use that list as a model for a > >>> > > > >>> Repeater > >>> > > > > >>> > > > and > >>> > > > > >>> > > > >>> build your buttons in the delegate of the Repeater. > >>> > > > >>> > >>> > > > >>> Cheers, Rick > >>> > > > >>> > >>> > > > >>> > >>> > > > >>> > >>> > > > >>> On Tue, Apr 16, 2013 at 5:11 AM, Николай Шатохин < > >>> > > > > >>> > > > n.shatok...@gmail.com> > >>> > > > > >>> > > > >>> wrote: > >>> > > > >>>> This is my code that creates buttons field: > >>> > > > >>>> > >>> > > > >>>> > >>> > > > >>>> onCreateField: > >>> > > > >>>> { > >>> > > > >>>> > >>> > > > >>>> for(var i=0;i<fieldWidth;i++) > >>> > > > >>>> { > >>> > > > >>>> > >>> > > > >>>> for(var j=0;j<fieldHeight;j++) > >>> > > > >>>> { > >>> > > > >>>> > >>> > > > >>>> createButton(i, j); > >>> > > > >>>> > >>> > > > >>>> } > >>> > > > >>>> > >>> > > > >>>> } > >>> > > > >>>> > >>> > > > >>>> } > >>> > > > >>>> > >>> > > > >>>> function createButton(x, y) > >>> > > > >>>> { > >>> > > > >>>> > >>> > > > >>>> __buttonX = x; > >>> > > > >>>> __buttonY = y; > >>> > > > >>>> > >>> > > > >>>> __component = Qt.createComponent("GameButton.qml"); > >>> > > > >>>> > >>> > > > >>>> if(__component != null) > >>> > > > >>>> > >>> > > > >>>> continueButtonCreation(); > >>> > > > >>>> > >>> > > > >>>> else > >>> > > > >>>> > >>> > > > >>>> __component.ready.connect(continueButtonCreation); > >>> > > > >>>> > >>> > > > >>>> } > >>> > > > >>>> > >>> > > > >>>> function continueButtonCreation() > >>> > > > >>>> { > >>> > > > >>>> > >>> > > > >>>> var button = __component.createObject(field, {"row": > >>> __buttonY, > >>> > >>> > > > >>>> "column": __buttonX}); > >>> > > > >>>> > >>> > > > >>>> if (button == null) { > >>> > > > >>>> > >>> > > > >>>> // Error Handling > >>> > > > >>>> console.log("Error creating object"); > >>> > > > >>>> > >>> > > > >>>> return; > >>> > > > >>>> > >>> > > > >>>> } > >>> > > > >>>> > >>> > > > >>>> updateValveState.connect(button.stateUpdated); > >>> > > > >>>> button.buttonClicked.connect(buttonClicked); > >>> > > > >>>> > >>> > > > >>>> field.clearField.connect(button.release); > >>> > > > >>>> > >>> > > > >>>> } > >>> > > > >>>> > >>> > > > >>>> > >>> > > > >>>> fieldWidth = fieldHeight = 16; > >>> > > > >>>> > >>> > > > >>>> > >>> > > > >>>> 2013/4/16 Alex Tyler <alex.ty...@nbss.co.uk> > >>> > > > >>>> > >>> > > > >>>>> Can we see some code? The only time Images hang for me in > >>> > >>> QML is > >>> > >>> > > > >>>>> when > >>> > > > >>>>> it's trying to load them synchronously. Try setting > >>> > >>> asynchronous > >>> > >>> > > > >>>>> to > >>> > > > > >>> > > > true. > >>> > > > > >>> > > > >>>>> Cheers, > >>> > > > >>>>> Alex > >>> > > > >>>>> > >>> > > > >>>>> On Tue, Apr 16, 2013 at 10:20 AM, <mrqt...@gmail.com> wrote: > >>> > > > >>>>>> I thought Nick creates 1024 (16x16) buttons, lol =) And > >>> > >>> even did > >>> > >>> > > > >>>>>> not > >>> > > > >>>>>> thought - for what :D > >>> > > > >>>>>> > >>> > > > >>>>>> Of course code is extremely bad, if buttons with size 16x16 > >>> > > > >>>>>> pixels > >>> > > > >>>>>> creating slowly. > >>> > > > >>>>>> > >>> > > > >>>>>> > >>> > > > >>>>>> 16.04.13 12:09 Michael Zanetti написал(а): > >>> > > > >>>>>> > >>> > > > >>>>>> On Tuesday 16 April 2013 01:01:28 Николай Шатохин wrote: > >>> > > > >>>>>> > Hello. > >>> > > > >>>>>> > > >>> > > > >>>>>> > In my code I'm creating 16x16 buttons in cycle and this > >>> > >>> take > >>> > >>> > > > >>>>>> > few > >>> > > > >>>>>> > seconds. > >>> > > > >>>>>> > While function that creating buttons runs, app freezes. I > >>> > >>> want > >>> > >>> > > > >>>>>> > to > >>> > > > >>>>>> > show > >>> > > > >>>>>> > loading animation while this function runs. So, how to > >>> > >>> run this > >>> > >>> > > > >>>>>> > function in > >>> > > > >>>>>> > parallel thread to avoid freezing? > >>> > > > >>>>>> > > >>> > > > >>>>>> > Best regards, > >>> > > > >>>>>> > Nick > >>> > > > >>>>>> > >>> > > > >>>>>> Creating 16x16 buttons shouldn take a few seconds. Can you > >>> > >>> paste > >>> > >>> > > > >>>>>> the > >>> > > > >>>>>> code > >>> > > > >>>>>> (also the button itself). To me it seems the issue is > >>> > >>> somewhere > >>> > >>> > > > else, > >>> > > > > >>> > > > >>>>>> e.g. in > >>> > > > >>>>>> the way you create the buttons or the buttens themselves > >>> > >>> are very > >>> > >>> > > > >>>>>> slow. > >>> > > > >>>>>> > >>> > > > >>>>>> Br, > >>> > > > >>>>>> Michael > >>> > > > >>>>>> > >>> > > > >>>>>> -- > >>> > > > >>>>>> Mailing list: https://launchpad.net/~ubuntu-phone > >>> > > > >>>>>> Post to : ubuntu-phone@lists.launchpad.net > >>> > > > >>>>>> Unsubscribe : https://launchpad.net/~ubuntu-phone > >>> > > > >>>>>> More help : https://launchpad.net/~ubuntu-phone > >>> > > > >>>>>> > >>> > > > >>>>>> > >>> > > > >>>>>> > >>> > > > >>>>>> -- > >>> > > > >>>>>> Mailing list: https://launchpad.net/~ubuntu-phone > >>> > > > >>>>>> Post to : ubuntu-phone@lists.launchpad.net > >>> > > > >>>>>> Unsubscribe : https://launchpad.net/~ubuntu-phone > >>> > > > >>>>>> More help : https://help.launchpad.net/ListHelp > >>> > > > >>>> > >>> > > > >>>> -- > >>> > > > >>>> Mailing list: https://launchpad.net/~ubuntu-phone > >>> > > > >>>> Post to : ubuntu-phone@lists.launchpad.net > >>> > > > >>>> Unsubscribe : https://launchpad.net/~ubuntu-phone > >>> > > > >>>> More help : https://help.launchpad.net/ListHelp > >>> > > > >>> > >>> > > > >>> -- > >>> > > > >>> Mailing list: https://launchpad.net/~ubuntu-phone > >>> > > > >>> Post to : ubuntu-phone@lists.launchpad.net > >>> > > > >>> Unsubscribe : https://launchpad.net/~ubuntu-phone > >>> > > > >>> More help : https://help.launchpad.net/ListHelp > >>> > > > > >>> > > > -- > >>> > > > Mailing list: https://launchpad.net/~ubuntu-phone > >>> > > > Post to : ubuntu-phone@lists.launchpad.net > >>> > > > Unsubscribe : https://launchpad.net/~ubuntu-phone > >>> > > > More help : https://help.launchpad.net/ListHelp > >>> > >>> -- > >>> Mailing list: https://launchpad.net/~ubuntu-phone > >>> Post to : ubuntu-phone@lists.launchpad.net > >>> Unsubscribe : https://launchpad.net/~ubuntu-phone > >>> More help : https://help.launchpad.net/ListHelp > >> > >> -- > >> Mailing list: https://launchpad.net/~ubuntu-phone > >> Post to : ubuntu-phone@lists.launchpad.net > >> Unsubscribe : https://launchpad.net/~ubuntu-phone > >> More help : https://help.launchpad.net/ListHelp -- Mailing list: https://launchpad.net/~ubuntu-phone Post to : ubuntu-phone@lists.launchpad.net Unsubscribe : https://launchpad.net/~ubuntu-phone More help : https://help.launchpad.net/ListHelp