diff options
author | Alan Alpert <alan.alpert@nokia.com> | 2009-10-07 01:03:21 (GMT) |
---|---|---|
committer | Alan Alpert <alan.alpert@nokia.com> | 2009-10-07 01:03:21 (GMT) |
commit | 95821d745a60e60422294dd718cbed5678ef5f1f (patch) | |
tree | f842b1f053c6c8f9664415e6dd2670e4cd9be919 /examples/declarative/tutorials/samegame/samegame2/samegame.js | |
parent | e25009d28c58b3ff7541374475f8c2c278cef02e (diff) | |
download | Qt-95821d745a60e60422294dd718cbed5678ef5f1f.zip Qt-95821d745a60e60422294dd718cbed5678ef5f1f.tar.gz Qt-95821d745a60e60422294dd718cbed5678ef5f1f.tar.bz2 |
Add SameGame based advanced tutorial
Could use some cleanup, as I didn't manage to get code snippets working
correctly. Also might benefit from being re-written by a good tutor.
Diffstat (limited to 'examples/declarative/tutorials/samegame/samegame2/samegame.js')
-rw-r--r-- | examples/declarative/tutorials/samegame/samegame2/samegame.js | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/examples/declarative/tutorials/samegame/samegame2/samegame.js b/examples/declarative/tutorials/samegame/samegame2/samegame.js new file mode 100644 index 0000000..064d87e --- /dev/null +++ b/examples/declarative/tutorials/samegame/samegame2/samegame.js @@ -0,0 +1,59 @@ +//Note that X/Y referred to here are in game coordinates +var maxX = 10;//Nums are for tileSize 40 +var maxY = 15; +var tileSize = 40; +var maxIndex = maxX*maxY; +var board = new Array(maxIndex); +var tileSrc = "Block.qml"; +var component; + +//Index function used instead of a 2D array +function index(xIdx,yIdx) { + return xIdx + (yIdx * maxX); +} + +function initBoard() +{ + //Calculate board size + maxX = Math.floor(background.width/tileSize); + maxY = Math.floor(background.height/tileSize); + maxIndex = maxY*maxX; + + //Initialize Board + board = new Array(maxIndex); + for(xIdx=0; xIdx<maxX; xIdx++){ + for(yIdx=0; yIdx<maxY; yIdx++){ + board[index(xIdx,yIdx)] = null; + createBlock(xIdx,yIdx); + } + } +} + +function createBlock(xIdx,yIdx){ + if(component==null) + component = createComponent(tileSrc); + + // Note that we don't wait for the component to become ready. This will + // only work if the block QML is a local file. Otherwise the component will + // not be ready immediately. There is a statusChanged signal on the + // component you could use if you want to wait to load remote files. + if(component.isReady){ + dynamicObject = component.createObject(); + if(dynamicObject == null){ + print("error creating block"); + print(component.errorsString()); + return false; + } + dynamicObject.parent = background; + dynamicObject.x = xIdx*tileSize; + dynamicObject.y = yIdx*tileSize; + dynamicObject.width = tileSize; + dynamicObject.height = tileSize; + board[index(xIdx,yIdx)] = dynamicObject; + }else{//isError or isLoading + print("error loading block component"); + print(component.errorsString()); + return false; + } + return true; +} |