Details | Last modification | View Log | SVN | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 3 | - | 1 | /* |
| 2 | BUGGAR |
||
| 3 | stor description: hackar när den beräknas? |
||
| 4 | width på timedateobjekt används nog inte nu |
||
| 5 | |||
| 6 | MISSTÄNKTA BUGGAR |
||
| 7 | |||
| 8 | ATT GÖRA |
||
| 9 | konfig för flinsh |
||
| 10 | vilken server:port skall anropas |
||
| 11 | färg/form/ram på markerat objekt |
||
| 12 | kommentera/dokumentera |
||
| 13 | cacheasbitmap för bakgrundsbild? bakgrundsbilden ska fixas om helt |
||
| 14 | menyobjektet skall stödja fade (sätt _alpha för alles till ett parametervärde), ska kunna användas när en meny skall hamna över en annan, den undre skall fadea |
||
| 15 | menyobjektet skall stödja inga animationer (specas i menuconfig) (jimmys önskan) |
||
| 16 | menykonfigparser skall göras om, parsa in allt, sen testa |
||
| 17 | |||
| 18 | gör om alla felmeddelanden i config, så den lagrar ett meddelande istället för en siffra |
||
| 19 | |||
| 20 | |||
| 21 | ett objekt som scrollats ut har properties: |
||
| 22 | height=0 |
||
| 23 | alpha=0 |
||
| 24 | inuse=false (=>visible=false) |
||
| 25 | |||
| 26 | */ |
||
| 27 | |||
| 28 | |||
| 29 | import mx.transitions.Tween; |
||
| 30 | import mx.utils.Delegate; |
||
| 31 | |||
| 32 | class MenuObj implements CommunicatorIF { |
||
| 33 | |||
| 34 | //screen position and size |
||
| 35 | private var menuTop:Number; |
||
| 36 | private var menuLeft:Number; |
||
| 37 | private var menuWidth:Number; |
||
| 38 | private var menuHeight:Number; |
||
| 39 | |||
| 40 | private var menuName:String; |
||
| 41 | |||
| 42 | //to each rowitem belongs a menuTexts, this is the one that animates up/down and resizes |
||
| 43 | private var menuTexts:Array = new Array(); |
||
| 44 | |||
| 45 | //the maximum number of items or rows that is visible, one extra row/item exist in menuText for the row that should scroll in |
||
| 46 | private var nrOfMenuItem:Number; |
||
| 47 | //the position of the item that is marked and show description |
||
| 48 | private var middleItemPosition:Number; |
||
| 49 | //dataList-index of the object that is placed in middleItemPosition |
||
| 50 | private var menuMiddleItem:Number=0; |
||
| 51 | //data to list on the menu, title and description |
||
| 52 | //private var dataList:XMLNode; |
||
| 53 | private var menuData:Array = new Array(); |
||
| 54 | |||
| 55 | //object to handle the description of the menuMiddleItem |
||
| 56 | private var menuItemDesc:MenuDescObj; |
||
| 57 | |||
| 58 | //delaytime is time before speeding up to repeattime (first scroll last delaytime and following scroll is repeattime) |
||
| 59 | private var scrollDelayTime:Number; |
||
| 60 | private var scrollRepeatTime:Number; |
||
| 61 | //time for description to fade in |
||
| 62 | private var descScrollTime:Number; |
||
| 63 | |||
| 64 | //placeholders, makes it easy to place and move menuTexts |
||
| 65 | private var placeHolder:Array = new Array(); |
||
| 66 | |||
| 67 | private var moveTween:Tween; |
||
| 68 | |||
| 69 | private var tweenCommand:Number = 0; |
||
| 70 | //0 = stop |
||
| 71 | //1 = scrollup |
||
| 72 | //2 = scrolldown |
||
| 73 | |||
| 74 | private var commObj:CommunicationObj; |
||
| 75 | |||
| 76 | private var newDataExists:Boolean; |
||
| 77 | private var newData:XMLNode; |
||
| 78 | |||
| 79 | private var isScrolling = false; |
||
| 80 | |||
| 81 | private var incomDataArr:Array = new Array(); |
||
| 82 | /* |
||
| 83 | lista här alla delar av configen |
||
| 84 | index name description |
||
| 85 | 1 menuname |
||
| 86 | 2 menudescription |
||
| 87 | 3 rowitemfont |
||
| 88 | 4 descriptionfont |
||
| 89 | 5 left horizontal placing of this menu |
||
| 90 | 6 top vertical placing of this menu |
||
| 91 | 7 width horizontal size of this menu, text will be cut if longer than this |
||
| 92 | 8 height vertical size of this menu |
||
| 93 | 9 menurowitems |
||
| 94 | 10 sizedrowitems |
||
| 95 | 11 scrolldelaytime |
||
| 96 | 12 scrollrepeattime |
||
| 97 | 13 menucolor |
||
| 98 | 14 desccolor |
||
| 99 | 15 descscrolltime the description fade-in-time |
||
| 100 | 16 |
||
| 101 | 17 |
||
| 102 | */ |
||
| 103 | |||
| 104 | /** |
||
| 105 | * Creates a new instance of MenuObj. |
||
| 106 | * @param mainScene Reference to the main MovieClip. |
||
| 107 | * @param configArr This is configuration data, like looks and timeing, for this menu. |
||
| 108 | */ |
||
| 109 | function MenuObj (mainScene:MovieClip, configXML:XMLNode) { |
||
| 110 | //anropa parseConfig(configXML), den returnerar en array där index 0 är ett nummer, -1 om datan är ok, annars ett unikt nummer för varje fel |
||
| 111 | // om datan inte parsades okej skall inget av nedanstående köras |
||
| 112 | //en global variabel skall inte sättas och anropande rutin skall kolla denna flagga, om den inte är satt så bör den signalera fel |
||
| 113 | |||
| 114 | var configArr:Array = parseConfig(configXML); |
||
| 115 | if (configArr[0] > -1) { |
||
| 116 | trace("Config error: " + configArr[0]); |
||
| 117 | } else { |
||
| 118 | var menuFont:TextFormat = new TextFormat(); |
||
| 119 | var descFont:TextFormat = new TextFormat(); |
||
| 120 | |||
| 121 | menuName = configArr[1]; |
||
| 122 | |||
| 123 | menuFont.font = configArr[3]; |
||
| 124 | menuFont.color = configArr[13]; |
||
| 125 | descFont.font = configArr[4]; |
||
| 126 | descFont.color = configArr[14]; |
||
| 127 | descScrollTime = configArr[15]; |
||
| 128 | |||
| 129 | menuLeft = configArr[5]; |
||
| 130 | menuTop = configArr[6]; |
||
| 131 | menuWidth = configArr[7]; |
||
| 132 | menuHeight = configArr[8]; |
||
| 133 | nrOfMenuItem = configArr[9]; |
||
| 134 | var itemsToSize:Number = configArr[10]; |
||
| 135 | scrollDelayTime = configArr[11]; |
||
| 136 | scrollRepeatTime = configArr[12]; |
||
| 137 | // = configArr[13]; |
||
| 138 | // = configArr[14]; |
||
| 139 | // = configArr[15]; |
||
| 140 | // = configArr[16]; |
||
| 141 | |||
| 142 | middleItemPosition = itemsToSize + 1; //TODO detta måste kontrolleras så itemsToSize är bra i förhållande till nrOfMenuItem |
||
| 143 | |||
| 144 | |||
| 145 | //menuFont.size = 16; //ska inte behöva sättas, men det är så inte den som anropar menuobj har pillat på den |
||
| 146 | |||
| 147 | // |
||
| 148 | //define the placeholders, give them their y-position and height |
||
| 149 | // |
||
| 150 | var heightFactor:Number = 1.2; //1.2; |
||
| 151 | //var heightFactorMiddle:Number = 1.2; |
||
| 152 | var heightDivider:Number = 0; |
||
| 153 | for (var i:Number=0; i<nrOfMenuItem; i++) { |
||
| 154 | if (i<itemsToSize) { |
||
| 155 | heightDivider = heightDivider + i + 1; |
||
| 156 | } else if (i>nrOfMenuItem-itemsToSize-1) { |
||
| 157 | heightDivider = heightDivider + (nrOfMenuItem - i); |
||
| 158 | // } else if (i==itemsToSize+1) { / |
||
| 159 | // heightDivider = heightDivider + (itemsToSize + 1)*heightFactorMiddle; |
||
| 160 | } else { |
||
| 161 | heightDivider = heightDivider + (itemsToSize + 1); |
||
| 162 | } |
||
| 163 | } |
||
| 164 | var unitSize = menuHeight / heightDivider; |
||
| 165 | //unitsize borde sparas globalt |
||
| 166 | for (var i:Number=0; i<nrOfMenuItem; i++) { |
||
| 167 | if (i==0) { |
||
| 168 | placeHolder[i] = new PlaceHolderObj(menuTop, unitSize*(i+1)*heightFactor); |
||
| 169 | } else if (i<itemsToSize) { |
||
| 170 | placeHolder[i] = new PlaceHolderObj(placeHolder[i-1].top+placeHolder[i-1].height/heightFactor, unitSize*(i+1)*heightFactor); |
||
| 171 | } else if (i>nrOfMenuItem-itemsToSize-1) { |
||
| 172 | placeHolder[i] = new PlaceHolderObj(placeHolder[i-1].top+placeHolder[i-1].height/heightFactor, unitSize*(nrOfMenuItem - i)*heightFactor); |
||
| 173 | // } else if (i==itemsToSize+1) { //TODO !! kolla så detta kan uppfyllas! itemsToSize måste kontrolleras ordentligt |
||
| 174 | // placeHolder[i] = new PlaceHolderObj(placeHolder[i-1].top+placeHolder[i-1].height/heightFactor, unitSize*(itemsToSize+1)*heightFactorMiddle*heightFactor); |
||
| 175 | } else { |
||
| 176 | placeHolder[i] = new PlaceHolderObj(placeHolder[i-1].top+placeHolder[i-1].height/heightFactor, unitSize*middleItemPosition*heightFactor); |
||
| 177 | } |
||
| 178 | } |
||
| 179 | for (var i:Number = 0; i < nrOfMenuItem+1; i++) { |
||
| 180 | menuTexts[i] = new MenuItemObj(mainScene, menuFont, menuLeft, menuWidth, unitSize*middleItemPosition); |
||
| 181 | } |
||
| 182 | |||
| 183 | //description skall placeras under det "valda" objektet (dess top+height) |
||
| 184 | var dummytop:Number = placeHolder[middleItemPosition].top+placeHolder[middleItemPosition].height; |
||
| 185 | //den skall maximalt sträcka sig ner till det näst sista objektet med "normal" storlek |
||
| 186 | var dummymaxheight:Number = placeHolder[nrOfMenuItem - middleItemPosition-1].top+placeHolder[nrOfMenuItem - middleItemPosition-1].height - dummytop; |
||
| 187 | menuItemDesc = new MenuDescObj(mainScene, descFont, descScrollTime, menuLeft+menuWidth/15, menuWidth-menuWidth/15, dummytop, dummymaxheight,unitSize*middleItemPosition*3/4); |
||
| 188 | //unitSize*middleItemPosition*3/4 avgör storleken på texten för description, *3/4 = tre fjärdedelar så stor som en normal menuitem |
||
| 189 | |||
| 190 | |||
| 191 | /*var testItem2:MovieClip = mainScene.createEmptyMovieClip("testItem2",mainScene.getNextHighestDepth()); |
||
| 192 | testItem2.beginFill(0x229922, 50); |
||
| 193 | testItem2.moveTo(menuLeft,dummytop) |
||
| 194 | testItem2.lineTo(menuLeft+menuWidth,dummytop) |
||
| 195 | testItem2.lineTo(menuLeft+menuWidth,dummymaxheight+dummytop) |
||
| 196 | testItem2.lineTo(menuLeft,dummymaxheight+dummytop) |
||
| 197 | testItem2.endFill();*/ |
||
| 198 | |||
| 199 | //bara tillfälligt så man ser hur ytan man har att jobba med ser ut |
||
| 200 | //markerar nu mittitemet |
||
| 201 | var testItem:MovieClip = mainScene.createEmptyMovieClip("testItem",mainScene.getNextHighestDepth()); |
||
| 202 | //testItem.beginFill(0x883333, 40); |
||
| 203 | testItem.lineStyle(5, 0x0, 45, false, "none", "round", "round"); |
||
| 204 | testItem.moveTo(menuLeft,placeHolder[middleItemPosition].top) |
||
| 205 | testItem.lineTo(menuLeft+menuWidth,placeHolder[middleItemPosition].top) |
||
| 206 | testItem.lineTo(menuLeft+menuWidth,placeHolder[middleItemPosition].top+placeHolder[middleItemPosition].height) |
||
| 207 | testItem.lineTo(menuLeft,placeHolder[middleItemPosition].top+placeHolder[middleItemPosition].height) |
||
| 208 | //testItem.endFill(); |
||
| 209 | testItem.lineTo(menuLeft,placeHolder[middleItemPosition].top) |
||
| 210 | |||
| 211 | } |
||
| 212 | |||
| 213 | } //end constructor |
||
| 214 | |||
| 215 | function getName():String { |
||
| 216 | return menuName; |
||
| 217 | } |
||
| 218 | |||
| 219 | public function setCommunicator(commObj:CommunicationObj):Void { |
||
| 220 | //trace(commObj); |
||
| 221 | this.commObj = commObj; |
||
| 222 | } |
||
| 223 | |||
| 224 | private function sendData(data:XML) { |
||
| 225 | //använd commobj som fåtts med setcommunicator ovan, testa om den finns först |
||
| 226 | //trace(commObj); |
||
| 227 | if (commObj != undefined) { |
||
| 228 | commObj.sendToServer(data); |
||
| 229 | } |
||
| 230 | } |
||
| 231 | |||
| 232 | public function showHide (isVisible:Boolean) :Void { |
||
| 233 | for (var i:Number = 0; i < nrOfMenuItem+1; i++) { |
||
| 234 | menuTexts[i].visible(isVisible); |
||
| 235 | } |
||
| 236 | menuItemDesc.visible(isVisible); |
||
| 237 | } |
||
| 238 | |||
| 239 | public function setNewData (data:XMLNode) :Void { |
||
| 240 | //trace(data); |
||
| 241 | //trace("duration: " + moveTween.duration + " finish: " + moveTween.finish + " FPS: " + moveTween.FPS + " position: " + moveTween.position + " time: " + moveTween.time); |
||
| 242 | |||
| 243 | //trace(data.nodeName); |
||
| 244 | |||
| 245 | if (incomDataArr.length > 0) { |
||
| 246 | incomDataArr.push(data); |
||
| 247 | } else { |
||
| 248 | if (data.nodeName == "command") { |
||
| 249 | parseCommand(data); |
||
| 250 | } else if (data.nodeName == "data") { |
||
| 251 | if (!isScrolling) { |
||
| 252 | parseMenuData(data); |
||
| 253 | } else { |
||
| 254 | incomDataArr.push(data); |
||
| 255 | } |
||
| 256 | } |
||
| 257 | } |
||
| 258 | } |
||
| 259 | |||
| 260 | private function popData () { |
||
| 261 | var whileCmd:Boolean = true; |
||
| 262 | |||
| 263 | |||
| 264 | while (whileCmd && incomDataArr.length > 0) { |
||
| 265 | trace("array size: " + incomDataArr.length); |
||
| 266 | var shifted:Object = incomDataArr.shift(); |
||
| 267 | trace("parsar data, nodenamn: " + shifted.nodeName); |
||
| 268 | if (shifted.nodeName == "data") { |
||
| 269 | //shifted = incomDataArr.shift(); |
||
| 270 | parseMenuData(shifted); |
||
| 271 | trace("skickat till menudataparsning"); |
||
| 272 | } else if (shifted.nodeName == "command") { |
||
| 273 | //whileCmd = false; |
||
| 274 | //trace("avsluta dataparsning"); |
||
| 275 | trace("kastar kommandon"); |
||
| 276 | |||
| 277 | } |
||
| 278 | } |
||
| 279 | |||
| 280 | /* |
||
| 281 | //parsa data tills kommando kommer |
||
| 282 | while (whileCmd && incomDataArr.length > 0) { |
||
| 283 | var shifted:Object = incomDataArr[0]; |
||
| 284 | trace("parsar data, nodenamn: " + shifted.nodeName); |
||
| 285 | if (shifted.nodeName == "data") { |
||
| 286 | shifted = incomDataArr.shift(); |
||
| 287 | parseMenuData(shifted); |
||
| 288 | trace("skickat till menudataparsning"); |
||
| 289 | } else if (shifted.nodeName == "command") { |
||
| 290 | whileCmd = false; |
||
| 291 | trace("avsluta dataparsning"); |
||
| 292 | |||
| 293 | } |
||
| 294 | } |
||
| 295 | |||
| 296 | whileCmd = true; |
||
| 297 | trace("array size: " + incomDataArr.length); |
||
| 298 | |||
| 299 | //sen parsas kommando tills data kommer |
||
| 300 | while (whileCmd && incomDataArr.length > 0) { |
||
| 301 | var shifted:Object = incomDataArr[0]; |
||
| 302 | trace("parsar kommando, nodenamn: " + shifted.nodeName); |
||
| 303 | |||
| 304 | if (shifted.nodeName == "command") { |
||
| 305 | shifted = incomDataArr.shift(); |
||
| 306 | //parseCommand(shifted); |
||
| 307 | trace("skickat till kommandoparsning"); |
||
| 308 | } else if (shifted.nodeName == "data") { |
||
| 309 | whileCmd = false; |
||
| 310 | trace("avsluta kommandoparsning"); |
||
| 311 | } |
||
| 312 | }*/ |
||
| 313 | |||
| 314 | } |
||
| 315 | |||
| 316 | private function parseCommand (data:Object) { |
||
| 317 | if (data.nodeName == "command") { |
||
| 318 | if (data.firstChild.nodeName == "scroll") { |
||
| 319 | if (data.firstChild.firstChild.nodeValue == 0) { |
||
| 320 | scrollStop(); |
||
| 321 | } else if (data.firstChild.firstChild.nodeValue == 1) { |
||
| 322 | scrollUp(); |
||
| 323 | } else if (data.firstChild.firstChild.nodeValue == -1) { |
||
| 324 | scrollDown(); |
||
| 325 | } |
||
| 326 | } |
||
| 327 | } |
||
| 328 | } |
||
| 329 | |||
| 330 | private function parseMenuData (data:Object) { |
||
| 331 | if (data.nodeName == "data") { |
||
| 332 | |||
| 333 | //för tillfället, strunta i att uppdatera med ny data om man håller på att scrolla |
||
| 334 | //prio på att fixa detta |
||
| 335 | //detta funkar någorlunda, kanske ha en lista med data som läses in här |
||
| 336 | //då man läst in data kollar man om listan är tom, annars får man läsa in igen |
||
| 337 | //if (!(moveTween.time == undefined || moveTween.time == moveTween.duration)) { |
||
| 338 | // newDataExists = true; |
||
| 339 | // newData = data; |
||
| 340 | if (false) {} else { |
||
| 341 | menuItemDesc.hide(); |
||
| 342 | |||
| 343 | var middleItem:Number = 0; |
||
| 344 | var middleItemId:String = ""; |
||
| 345 | var dataList:XMLNode; |
||
| 346 | |||
| 347 | //trace(data); |
||
| 348 | for (var aNode:XMLNode = data.firstChild; aNode != null; aNode=aNode.nextSibling) { |
||
| 349 | //trace(aNode); |
||
| 350 | |||
| 351 | if (aNode.nodeName == "middleid") { |
||
| 352 | //trace("middle: " + aNode); |
||
| 353 | middleItemId = aNode.firstChild.nodeValue; |
||
| 354 | //trace(middleItemId); |
||
| 355 | } |
||
| 356 | if (aNode.nodeName == "list") { |
||
| 357 | //trace("listan: " + aNode); |
||
| 358 | dataList = aNode; |
||
| 359 | } |
||
| 360 | } |
||
| 361 | if (dataList != null) { |
||
| 362 | menuData = new Array(); |
||
| 363 | var cnt:Number = 0; |
||
| 364 | for (var aNode:XMLNode = dataList.firstChild; aNode != null; aNode=aNode.nextSibling) { |
||
| 365 | //trace("nästa child: " + aNode); |
||
| 366 | var title:String = ""; |
||
| 367 | var description:String = ""; |
||
| 368 | var id:String = ""; |
||
| 369 | title = aNode.attributes.title; |
||
| 370 | description = aNode.attributes.desc; |
||
| 371 | id = aNode.attributes.id; |
||
| 372 | |||
| 373 | if (id == middleItemId) { |
||
| 374 | middleItem = cnt; |
||
| 375 | } |
||
| 376 | |||
| 377 | //trace(id); |
||
| 378 | //trace(title); |
||
| 379 | //trace(description); |
||
| 380 | |||
| 381 | /*for (var bNode:XMLNode = aNode.firstChild; bNode != null; bNode=bNode.nextSibling) { |
||
| 382 | //trace("nytt" + bNode.nodeName); |
||
| 383 | if (bNode.nodeName == "title") { |
||
| 384 | if (bNode.firstChild.nodeValue != undefined) { |
||
| 385 | title = bNode.firstChild.nodeValue; |
||
| 386 | } else { |
||
| 387 | title = ""; |
||
| 388 | } |
||
| 389 | } else if (bNode.nodeName == "description") { |
||
| 390 | if (bNode.firstChild.nodeValue != undefined) { |
||
| 391 | description = bNode.firstChild.nodeValue; |
||
| 392 | } else { |
||
| 393 | description = ""; |
||
| 394 | } |
||
| 395 | } else if (bNode.nodeName == "id") { |
||
| 396 | if (bNode.firstChild.nodeValue != undefined) { |
||
| 397 | id = bNode.firstChild.nodeValue; |
||
| 398 | //trace("inkommande id: " + id + " cnt2:"); |
||
| 399 | if (id == middleItemId) { |
||
| 400 | middleItem = cnt; |
||
| 401 | } |
||
| 402 | } else { |
||
| 403 | id = ""; |
||
| 404 | } |
||
| 405 | } |
||
| 406 | //trace("nästa child: " + bNode); |
||
| 407 | }*/ |
||
| 408 | menuData[cnt] = new MenuDataObj(id, title, description); |
||
| 409 | //trace(menuData[cnt].description); |
||
| 410 | cnt++; |
||
| 411 | } |
||
| 412 | } |
||
| 413 | |||
| 414 | //trace(menuTexts.length); |
||
| 415 | for (var i:Number = 0; i < menuTexts.length; i++) { |
||
| 416 | //menuTexts[i].setText(""); |
||
| 417 | menuTexts[i].setFree(true); |
||
| 418 | menuTexts[i].notInUse(); |
||
| 419 | menuTexts[i].visible(true); //göm alla items (inuse är false därmed göms de när man anropa visible) |
||
| 420 | menuTexts[i].setAlpha(100); |
||
| 421 | } |
||
| 422 | |||
| 423 | //dataList = data; //save global |
||
| 424 | menuMiddleItem = middleItem; //save global |
||
| 425 | |||
| 426 | var menuItemCnt:Number = 0; |
||
| 427 | for (var i:Number = middleItem-middleItemPosition; i<middleItem+nrOfMenuItem-middleItemPosition; i++) { |
||
| 428 | if (i<0) { |
||
| 429 | if (menuData.length > nrOfMenuItem) { |
||
| 430 | menuTexts[menuItemCnt].setText(menuData[menuData.length + i].title); |
||
| 431 | menuTexts[menuItemCnt].setDataIndex(i); |
||
| 432 | } |
||
| 433 | } else if (i < menuData.length) { |
||
| 434 | menuTexts[menuItemCnt].setText(menuData[i].title); |
||
| 435 | menuTexts[menuItemCnt].setDataIndex(i); |
||
| 436 | } else { //nu är i > antal noder i listan, vi kanske ska ladda in nod0, nod1 osv nu |
||
| 437 | if (menuData.length >= nrOfMenuItem) { |
||
| 438 | menuTexts[menuItemCnt].setText(menuData[i - menuData.length].title); |
||
| 439 | menuTexts[menuItemCnt].setDataIndex(i); |
||
| 440 | } else { |
||
| 441 | //trace(menuItemCnt + " " + nrOfMenuItem); |
||
| 442 | //trace(menuItemCnt); |
||
| 443 | } |
||
| 444 | } |
||
| 445 | menuItemCnt++; |
||
| 446 | } |
||
| 447 | |||
| 448 | for (var i:Number = 0; i < nrOfMenuItem; i++) { |
||
| 449 | placeHolder[i].menuItemIndex = i; |
||
| 450 | |||
| 451 | menuTexts[i].setFree(false); |
||
| 452 | menuTexts[i].setTop(placeHolder[i].top); |
||
| 453 | menuTexts[i].setHeight(placeHolder[i].height); |
||
| 454 | //trace("i: " + i + " top: " + menuTexts[i].getTop() + " text: " + menuTexts[i].getText()); |
||
| 455 | } |
||
| 456 | showDescription(); |
||
| 457 | } |
||
| 458 | } |
||
| 459 | } |
||
| 460 | |||
| 461 | |||
| 462 | public function test (Void):Void { |
||
| 463 | for (var i:Number = 0; i < nrOfMenuItem + 1; i++) { |
||
| 464 | trace(i + " " + menuTexts[i].getTop() + " : " + menuTexts[i].getText()); |
||
| 465 | trace(menuTexts[i].isInUse()); |
||
| 466 | //placeHolder[i].menuItemIndex = i; |
||
| 467 | |||
| 468 | //trace("i: " + i + " top: " + menuTexts[i].getTop() + " text: " + menuTexts[i].getText()); |
||
| 469 | //menuTexts[i].setHeight(placeHolder[i].height); |
||
| 470 | } |
||
| 471 | showDescription(); |
||
| 472 | |||
| 473 | /* var testvar:Number; |
||
| 474 | for (var i:Number = 0; i < nrOfMenuItem+1; i++) { |
||
| 475 | testvar = menuTexts[i].getHeight(); |
||
| 476 | }*/ |
||
| 477 | } |
||
| 478 | |||
| 479 | private function onMoveTweenDone() { |
||
| 480 | /* |
||
| 481 | var tweenCommand:Number = 0; |
||
| 482 | //0 = stop |
||
| 483 | //1 = scrollup |
||
| 484 | //2 = scrolldown |
||
| 485 | |||
| 486 | */ |
||
| 487 | isScrolling = false; |
||
| 488 | |||
| 489 | if (tweenCommand == 1) { |
||
| 490 | scrollUp(); |
||
| 491 | } else if (tweenCommand == 2) { |
||
| 492 | scrollDown(); |
||
| 493 | } else if (tweenCommand == 0) { |
||
| 494 | if (incomDataArr.length > 0) { |
||
| 495 | //if (newDataExists) { |
||
| 496 | //detta funkar någorlunda |
||
| 497 | //trace(".time: " + moveTween.time + ".duration: " + moveTween.duration); |
||
| 498 | //newDataExists = false; |
||
| 499 | //setNewData(newData); |
||
| 500 | popData(); |
||
| 501 | |||
| 502 | } else { |
||
| 503 | //test(); |
||
| 504 | showDescription(); |
||
| 505 | sendData(new XML("<flinshpacket menuid=\"" + menuName + "\" middleid=\"" + menuData[menuMiddleItem].id + "\" />")); |
||
| 506 | } |
||
| 507 | //sendData(new XML("<data name=\"id\" value=\"" + menuName+ "\"><middleitem>" + menuMiddleItem + "</middleitem></data>")); |
||
| 508 | } |
||
| 509 | } |
||
| 510 | |||
| 511 | private function showDescription() { |
||
| 512 | |||
| 513 | //finns ingen description skall detta inte köras dock (det ser menudescobj till, dess height blir 0) |
||
| 514 | menuItemDesc.update(menuData[menuMiddleItem].description); |
||
| 515 | //menuItemDesc.update("Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat."); |
||
| 516 | |||
| 517 | //kör igång animering på de items som ligger ivägen |
||
| 518 | var descY:Number = menuItemDesc.getBottom(); |
||
| 519 | var firstFreePlaceHolder:Number = 0; |
||
| 520 | for (var i:Number = middleItemPosition+1; i < nrOfMenuItem; i++) { |
||
| 521 | //ta reda på vilken som är första "fria" placeHoldern |
||
| 522 | if (descY<placeHolder[i-1].top+placeHolder[i-1].height) { |
||
| 523 | firstFreePlaceHolder = i; |
||
| 524 | //trace(i + " " + (placeHolder[i-1].top + placeHolder[i-1].height) ); |
||
| 525 | break; |
||
| 526 | } |
||
| 527 | } |
||
| 528 | if (firstFreePlaceHolder > 0) { |
||
| 529 | for (var i:Number = 0; i < nrOfMenuItem + 1 ; i++) { |
||
| 530 | menuTexts[i].fforward(); |
||
| 531 | } |
||
| 532 | var offset:Number = firstFreePlaceHolder - middleItemPosition-1; |
||
| 533 | for (var i:Number = middleItemPosition+1; i < nrOfMenuItem; i++) { |
||
| 534 | //kolla igenom de menuTexts som möjligtvis kan ligga under description |
||
| 535 | //dessa skall tweenas i storlek och position, offsetten mellan första upptagna och första fria skall sparas |
||
| 536 | //alla ska flyttas med offsetten, hamnar de utanför sista placeholdern skall de läggas där med height = 0 |
||
| 537 | //placeHolders ska nu bara användas för att flytta och resiza menuTexts, de skall inte ändras |
||
| 538 | //trace(i); |
||
| 539 | if (i+offset<nrOfMenuItem) { |
||
| 540 | moveTween = menuTexts[placeHolder[i].menuItemIndex].scroll(placeHolder[i+offset].top, placeHolder[i+offset].height, descScrollTime/2); |
||
| 541 | } else { |
||
| 542 | moveTween = menuTexts[placeHolder[i].menuItemIndex].scroll(placeHolder[nrOfMenuItem-1].top + placeHolder[nrOfMenuItem-1].height, 0, descScrollTime/2); |
||
| 543 | } |
||
| 544 | } |
||
| 545 | } |
||
| 546 | menuItemDesc.appear(); |
||
| 547 | } |
||
| 548 | |||
| 549 | |||
| 550 | public function scrollUp (Void) :Void { |
||
| 551 | //trace("up"); |
||
| 552 | |||
| 553 | |||
| 554 | var wrapMenu:Boolean = (menuData.length >= nrOfMenuItem); |
||
| 555 | moveTween.onMotionFinished = null; |
||
| 556 | if ((menuMiddleItem > 0) || (wrapMenu)) { |
||
| 557 | isScrolling = true; |
||
| 558 | |||
| 559 | for (var i:Number = 0; i < nrOfMenuItem + 1; i++) { |
||
| 560 | menuTexts[i].fforward(); |
||
| 561 | } |
||
| 562 | |||
| 563 | menuMiddleItem--; |
||
| 564 | menuItemDesc.hide(); //Hide the description placed under the marked item (if description is shown) |
||
| 565 | |||
| 566 | //makes sure menumiddleitem is correct when wrapping |
||
| 567 | if (menuMiddleItem < 0) { |
||
| 568 | menuMiddleItem = menuData.length-1; |
||
| 569 | } |
||
| 570 | |||
| 571 | if (tweenCommand == 0) { //om vi inte redan är igång så ska den längre scrollen köras |
||
| 572 | var timeToScroll:Number = scrollDelayTime; |
||
| 573 | } else { //annars kör vi repeatrate |
||
| 574 | var timeToScroll:Number = scrollRepeatTime; |
||
| 575 | } |
||
| 576 | tweenCommand = 1; |
||
| 577 | |||
| 578 | //i placeholdern längst ner finns det nu lediga menuitem |
||
| 579 | var dummyFree:Number = placeHolder[nrOfMenuItem-1].menuItemIndex; |
||
| 580 | //scrolla detta menuitem så det hamnar under den placeholdern längst ner och scrolla dess height till 0 |
||
| 581 | moveTween = menuTexts[dummyFree].scroll(placeHolder[nrOfMenuItem-1].top + placeHolder[nrOfMenuItem-1].height, 0, timeToScroll); |
||
| 582 | //BUGG löst |
||
| 583 | //den beror delvis på att menuitemobj inte scrollar om objektet är på samma y-värde som tidigare |
||
| 584 | //fixat längre ner, där man scrollar in den nya |
||
| 585 | |||
| 586 | //fadea bort den också |
||
| 587 | if (menuTexts[dummyFree].isInUse()) { |
||
| 588 | menuTexts[dummyFree].fade(100, 0, timeToScroll); |
||
| 589 | //detta buggar, inuse är inte riktigt rätt satt, vilket gör att itemet är visible |
||
| 590 | |||
| 591 | } |
||
| 592 | |||
| 593 | //trace("frigör: " + dummyFree); |
||
| 594 | |||
| 595 | for (var i:Number = nrOfMenuItem-1; i > 0; i--) { |
||
| 596 | //trace("flyttar " + placeHolder[i-1].menuItemIndex + " till placeHolder[" + i + "]"); |
||
| 597 | placeHolder[i].menuItemIndex = placeHolder[i-1].menuItemIndex; |
||
| 598 | var curPlace:PlaceHolderObj = placeHolder[i]; |
||
| 599 | moveTween = menuTexts[curPlace.menuItemIndex].scroll(curPlace.top, curPlace.height, timeToScroll); |
||
| 600 | } |
||
| 601 | |||
| 602 | //find a free menuText |
||
| 603 | var freeItem:Number; |
||
| 604 | for (var i:Number = 0; i < nrOfMenuItem+1; i++) { |
||
| 605 | if (menuTexts[i].isFree()) { |
||
| 606 | freeItem = i; |
||
| 607 | break; |
||
| 608 | } |
||
| 609 | } |
||
| 610 | |||
| 611 | //frigör den _efter_ valet av ny kontainer |
||
| 612 | menuTexts[dummyFree].setFree(true); |
||
| 613 | menuTexts[dummyFree].notInUse(); |
||
| 614 | |||
| 615 | var curPlace:PlaceHolderObj = placeHolder[0]; |
||
| 616 | curPlace.menuItemIndex = freeItem; |
||
| 617 | |||
| 618 | //newItem is the index of a menudata-entry, the entry that now should enter the menu |
||
| 619 | var newItem:Number = menuMiddleItem-middleItemPosition; |
||
| 620 | if ((wrapMenu) && (newItem<0)) { |
||
| 621 | newItem = newItem + menuData.length; |
||
| 622 | } |
||
| 623 | if ((newItem>=0) || (wrapMenu)) { |
||
| 624 | //trace("använder: " + freeItem + " till: " + menuData[newItem].title); |
||
| 625 | menuTexts[curPlace.menuItemIndex].setFree(false); |
||
| 626 | menuTexts[curPlace.menuItemIndex].setText(menuData[newItem].title); |
||
| 627 | menuTexts[curPlace.menuItemIndex].setDataIndex(newItem); |
||
| 628 | menuTexts[curPlace.menuItemIndex].setTop(menuTop+1); |
||
| 629 | menuTexts[curPlace.menuItemIndex].setHeight(0); |
||
| 630 | menuTexts[curPlace.menuItemIndex].fade(0, 100, timeToScroll); |
||
| 631 | moveTween = menuTexts[curPlace.menuItemIndex].scroll(curPlace.top, curPlace.height, timeToScroll); |
||
| 632 | //trace("inuse: " + menuTexts[freeItem].isInUse() + " kanal: " + menuData[newItem].title + " visible: " + menuTexts[freeItem].isvisible()); |
||
| 633 | } else { |
||
| 634 | //trace("använder2: " + freeItem); |
||
| 635 | menuTexts[curPlace.menuItemIndex].setFree(false); |
||
| 636 | |||
| 637 | } |
||
| 638 | |||
| 639 | moveTween.onMotionFinished = Delegate.create(this, onMoveTweenDone); |
||
| 640 | } else { |
||
| 641 | showDescription(); |
||
| 642 | tweenCommand = 0; |
||
| 643 | } |
||
| 644 | } |
||
| 645 | |||
| 646 | /** |
||
| 647 | scrollDown |
||
| 648 | */ |
||
| 649 | public function scrollDown () { |
||
| 650 | |||
| 651 | var wrapMenu:Boolean = (menuData.length >= nrOfMenuItem); |
||
| 652 | moveTween.onMotionFinished = null; |
||
| 653 | |||
| 654 | if ((menuMiddleItem < menuData.length-1) || (wrapMenu)) { |
||
| 655 | isScrolling = true; |
||
| 656 | for (var i:Number = 0; i < nrOfMenuItem + 1 ; i++) { |
||
| 657 | menuTexts[i].fforward(); |
||
| 658 | //fforward() |
||
| 659 | } |
||
| 660 | |||
| 661 | menuMiddleItem++; |
||
| 662 | menuItemDesc.hide(); //Hide the description placed under the marked item (if description is shown) |
||
| 663 | |||
| 664 | //makes sure menumiddleitem is correct when wrapping |
||
| 665 | if (menuMiddleItem >= menuData.length) { |
||
| 666 | menuMiddleItem = 0; |
||
| 667 | } |
||
| 668 | |||
| 669 | if (tweenCommand == 0) { //om vi inte redan är igång så ska den längre scrollen köras |
||
| 670 | var timeToScroll:Number = scrollDelayTime; |
||
| 671 | } else { //annars kör vi repeatrate |
||
| 672 | var timeToScroll:Number = scrollRepeatTime; |
||
| 673 | } |
||
| 674 | tweenCommand = 2; |
||
| 675 | |||
| 676 | var dummyFree:Number = placeHolder[0].menuItemIndex; |
||
| 677 | //menuTexts[dummyFree].fforward(); |
||
| 678 | moveTween = menuTexts[dummyFree].scroll(menuTexts[dummyFree].getTop, 0, timeToScroll); |
||
| 679 | menuTexts[dummyFree].fade(100, 0, timeToScroll); |
||
| 680 | //trace("frigör: " + dummyFree); |
||
| 681 | |||
| 682 | for (var i:Number = 0; i < nrOfMenuItem-1; i++) { |
||
| 683 | placeHolder[i].menuItemIndex = placeHolder[i+1].menuItemIndex; |
||
| 684 | var curPlace:PlaceHolderObj = placeHolder[i]; |
||
| 685 | moveTween = menuTexts[curPlace.menuItemIndex].scroll(curPlace.top, curPlace.height, timeToScroll); |
||
| 686 | } |
||
| 687 | |||
| 688 | //find a free menuText |
||
| 689 | var freeItem:Number; |
||
| 690 | for (var i:Number = 0; i < nrOfMenuItem+1; i++) { |
||
| 691 | if (menuTexts[i].isFree()) { |
||
| 692 | freeItem = i; |
||
| 693 | break; |
||
| 694 | } |
||
| 695 | } |
||
| 696 | //frigör den _efter_ valet av ny kontainer |
||
| 697 | menuTexts[dummyFree].setFree(true); |
||
| 698 | menuTexts[dummyFree].notInUse(); |
||
| 699 | |||
| 700 | var curPlace:PlaceHolderObj = placeHolder[nrOfMenuItem-1]; |
||
| 701 | curPlace.menuItemIndex = freeItem; |
||
| 702 | |||
| 703 | //newItem is the index of a menudata-entry, the entry that now should enter the menu |
||
| 704 | var newItem:Number = menuMiddleItem+nrOfMenuItem-middleItemPosition-1; |
||
| 705 | if ((wrapMenu) && (newItem>=menuData.length)) { |
||
| 706 | newItem = newItem - menuData.length; |
||
| 707 | } |
||
| 708 | if ((newItem<menuData.length) || (wrapMenu)) { |
||
| 709 | //trace("använder: " + freeItem); |
||
| 710 | menuTexts[curPlace.menuItemIndex].setFree(false); |
||
| 711 | menuTexts[curPlace.menuItemIndex].setText(menuData[newItem].title); |
||
| 712 | menuTexts[curPlace.menuItemIndex].setDataIndex(newItem); |
||
| 713 | menuTexts[curPlace.menuItemIndex].setTop(menuTop+menuHeight); |
||
| 714 | menuTexts[curPlace.menuItemIndex].setHeight(0); |
||
| 715 | menuTexts[curPlace.menuItemIndex].fade(0, 100, timeToScroll); |
||
| 716 | moveTween = menuTexts[curPlace.menuItemIndex].scroll(curPlace.top, curPlace.height, timeToScroll); |
||
| 717 | } else { |
||
| 718 | //trace("använder2: " + freeItem); |
||
| 719 | menuTexts[curPlace.menuItemIndex].setFree(false); |
||
| 720 | |||
| 721 | } |
||
| 722 | |||
| 723 | moveTween.onMotionFinished = Delegate.create(this, onMoveTweenDone); |
||
| 724 | } else { |
||
| 725 | showDescription(); |
||
| 726 | tweenCommand = 0; |
||
| 727 | } |
||
| 728 | |||
| 729 | } |
||
| 730 | |||
| 731 | |||
| 732 | |||
| 733 | public function scrollStop (Void) :Void { |
||
| 734 | /* |
||
| 735 | description kommer få en max-height, blir den större ska den scrolla :) |
||
| 736 | denna kommer få max-height så att det alltid finns en stor item under samt alla de små |
||
| 737 | |||
| 738 | var tweenCommand:Number = 0; |
||
| 739 | //0 = stop |
||
| 740 | //1 = scrollup |
||
| 741 | //2 = scrolldown |
||
| 742 | */ |
||
| 743 | |||
| 744 | |||
| 745 | tweenCommand = 0; |
||
| 746 | |||
| 747 | } |
||
| 748 | |||
| 749 | public function setScrollDelay (value:Number) :Void { |
||
| 750 | /* |
||
| 751 | */ |
||
| 752 | if (value > 0.05) { |
||
| 753 | scrollDelayTime = value; |
||
| 754 | } |
||
| 755 | } |
||
| 756 | public function setScrollRepeat (value:Number) :Void { |
||
| 757 | /* |
||
| 758 | */ |
||
| 759 | if (value > 0.05) { |
||
| 760 | scrollRepeatTime = value; |
||
| 761 | } |
||
| 762 | } |
||
| 763 | |||
| 764 | public function getScrollDelay (Void) :Number { |
||
| 765 | /* |
||
| 766 | */ |
||
| 767 | return scrollDelayTime; |
||
| 768 | } |
||
| 769 | public function getScrollRepeat (Void) :Number { |
||
| 770 | /* |
||
| 771 | */ |
||
| 772 | return scrollRepeatTime; |
||
| 773 | } |
||
| 774 | |||
| 775 | private function parseConfig(data:XMLNode): Array { |
||
| 776 | var confError:Number = -1; |
||
| 777 | var confArr:Array = new Array(); |
||
| 778 | for (var bNode:XMLNode = data.firstChild; bNode != null && confError == -1; bNode=bNode.nextSibling) { |
||
| 779 | //trace(bNode.nodeName); |
||
| 780 | if (bNode.nodeName == "option") { |
||
| 781 | switch (bNode.attributes.name) { |
||
| 782 | case "menushortname": |
||
| 783 | confArr[1] = bNode.attributes.value; |
||
| 784 | break; |
||
| 785 | case "menudescription": |
||
| 786 | confArr[2] = bNode.attributes.value; |
||
| 787 | break; |
||
| 788 | case "rowitemfont": |
||
| 789 | if (bNode.attributes.value.length > 0) { |
||
| 790 | confArr[3] = bNode.attributes.value; |
||
| 791 | } else { |
||
| 792 | confError = 3; |
||
| 793 | } |
||
| 794 | break; |
||
| 795 | case "descriptionfont": |
||
| 796 | if (bNode.attributes.value.length > 0) { |
||
| 797 | confArr[4] = bNode.attributes.value; |
||
| 798 | } else { |
||
| 799 | confError = 4; |
||
| 800 | } |
||
| 801 | //trace(aNode.attributes.value); |
||
| 802 | break; |
||
| 803 | case "left": |
||
| 804 | if (parseFloat(bNode.attributes.value) >= 0) { |
||
| 805 | confArr[5] = parseFloat(bNode.attributes.value) * Stage.width; |
||
| 806 | } else { |
||
| 807 | confError = 5; |
||
| 808 | } |
||
| 809 | break; |
||
| 810 | case "top": |
||
| 811 | if (parseFloat(bNode.attributes.value) >= 0) { |
||
| 812 | confArr[6] = parseFloat(bNode.attributes.value) * Stage.height; |
||
| 813 | } else { |
||
| 814 | confError = 6; |
||
| 815 | } |
||
| 816 | break; |
||
| 817 | case "width": |
||
| 818 | if (parseFloat(bNode.attributes.value) >= 0) { |
||
| 819 | confArr[7] = parseFloat(bNode.attributes.value) * Stage.width; |
||
| 820 | } else { |
||
| 821 | confError = 7; |
||
| 822 | } |
||
| 823 | break; |
||
| 824 | case "height": |
||
| 825 | if (parseFloat(bNode.attributes.value) >= 0) { |
||
| 826 | confArr[8] = parseFloat(bNode.attributes.value) * Stage.height; |
||
| 827 | } else { |
||
| 828 | confError = 8; |
||
| 829 | } |
||
| 830 | break; |
||
| 831 | case "menurowitems": |
||
| 832 | if (parseInt(bNode.attributes.value) > 0) { |
||
| 833 | confArr[9] = parseInt(bNode.attributes.value); |
||
| 834 | } else { |
||
| 835 | confError = 9; |
||
| 836 | } |
||
| 837 | break; |
||
| 838 | case "sizedrowitems": |
||
| 839 | if (parseInt(bNode.attributes.value) > 0) { |
||
| 840 | confArr[10] = parseInt(bNode.attributes.value); |
||
| 841 | } else { |
||
| 842 | confError = 10; |
||
| 843 | } |
||
| 844 | break; |
||
| 845 | case "scrolldelaytime": |
||
| 846 | if (parseFloat(bNode.attributes.value) >= 0) { |
||
| 847 | confArr[11] = parseFloat(bNode.attributes.value); |
||
| 848 | } else { |
||
| 849 | confError = 11; |
||
| 850 | } |
||
| 851 | //10 |
||
| 852 | break; |
||
| 853 | case "scrollrepeattime": |
||
| 854 | if (parseFloat(bNode.attributes.value) >= 0) { |
||
| 855 | confArr[12] = parseFloat(bNode.attributes.value); |
||
| 856 | } else { |
||
| 857 | confError = 12; |
||
| 858 | } |
||
| 859 | break; |
||
| 860 | case "menucolor": |
||
| 861 | if (parseInt(bNode.attributes.value) >= 0) { |
||
| 862 | confArr[13] = parseInt(bNode.attributes.value); |
||
| 863 | //trace(confArr[13]); |
||
| 864 | } else { |
||
| 865 | confError = 13; |
||
| 866 | } |
||
| 867 | break; |
||
| 868 | case "desccolor": |
||
| 869 | if (parseInt(bNode.attributes.value) >= 0) { |
||
| 870 | confArr[14] = parseInt(bNode.attributes.value); |
||
| 871 | } else { |
||
| 872 | confError = 14; |
||
| 873 | } |
||
| 874 | break; |
||
| 875 | case "descscrolltime": |
||
| 876 | if (parseFloat(bNode.attributes.value) >= 0) { |
||
| 877 | confArr[15] = parseFloat(bNode.attributes.value); |
||
| 878 | } else { |
||
| 879 | confError = 15; |
||
| 880 | } |
||
| 881 | break; |
||
| 882 | case "": |
||
| 883 | if (true) { |
||
| 884 | confArr[16] = parseFloat(bNode.attributes.value); |
||
| 885 | } else { |
||
| 886 | confError = 16; |
||
| 887 | } |
||
| 888 | break; |
||
| 889 | case "": |
||
| 890 | if (true) { |
||
| 891 | confArr[17] = parseFloat(bNode.attributes.value); |
||
| 892 | } else { |
||
| 893 | confError = 17; |
||
| 894 | } |
||
| 895 | break; |
||
| 896 | case "": |
||
| 897 | if (true) { |
||
| 898 | confArr[18] = parseFloat(bNode.attributes.value); |
||
| 899 | } else { |
||
| 900 | confError = 18; |
||
| 901 | } |
||
| 902 | break; |
||
| 903 | } |
||
| 904 | } |
||
| 905 | } |
||
| 906 | confArr[0] = confError; |
||
| 907 | return confArr; |
||
| 908 | } |
||
| 909 | } |