{ "id": "113581", "key": "TIMOB-13762", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [], "resolution": { "id": "2", "description": "The problem described is an issue which will never be fixed.", "name": "Won't Fix" }, "resolutiondate": "2017-06-26T21:54:09.000+0000", "created": "2013-04-30T16:55:28.000+0000", "priority": { "name": "Low", "id": "4" }, "labels": [ "parity" ], "versions": [ { "id": "14162", "description": "Release 3.1.0", "name": "Release 3.1.0", "archived": true, "released": true, "releaseDate": "2013-04-16" }, { "id": "14982", "description": "Release 3.2.0", "name": "Release 3.2.0", "archived": false, "released": true, "releaseDate": "2013-12-19" } ], "issuelinks": [ { "id": "28367", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "113570", "key": "TIMOB-13761", "fields": { "summary": "Mobile Web: Animation that uses matrix and autoreverse + repeat does not work as expected", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Low", "id": "4" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } } ], "assignee": { "name": "cbarber", "key": "cbarber", "displayName": "Chris Barber", "active": true, "timeZone": "America/Chicago" }, "updated": "2018-04-04T23:20:17.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "11500", "name": "MobileWeb", "description": "Mobile Web (HTML) Platform" } ], "description": "*Actual result*\r\nOn Mobile Web an animation does not repeat.\r\n\r\n*Expected result*\r\nAnimation should repeat on each click. On Android native it works as expected.\r\n\r\n*Steps to reproduce*\r\n1. Run the attached sample on Mobile Web (even standard Firefox browser will reproduce the issue)\r\n2. Tap \"Animate X\" button and verify the red block moves to the right corner\r\n3. Verify that a second tap of the button has no effect\r\n4. To see expected behavior: Run on native Android and tap the \"Animate X\" button\r\n5. Verify the animation is repeated every time the \"Animate X\" button is pressed\r\n\r\n*Test case*\r\nAttachment has a clipping issue, fixed code:\r\n{code:javascript}\r\nTitanium.UI.setBackgroundColor('#000');\r\n\r\nvar win = Titanium.UI.createWindow({\r\n\tbackgroundColor : '#fff',\r\n\tlayout : \"absolute\"\r\n});\r\n\r\nvar container = Ti.UI.createView({\r\n\tleft : 10,\r\n\tright : 10,\r\n\ttop : 10,\r\n\theight : 200,\r\n\tlayout : \"horizontal\"\r\n});\r\n\r\nvar animateX = Ti.UI.createButton({\r\n\ttitle : \"Animate X\"\r\n});\r\nvar animationX = Ti.UI.createAnimation({\r\n\tleft : 200,\r\n\tduration : 3000,\r\n\tdelay : 1000,\r\n\trepeat : 2,\r\n\t//\tautoreverse: true,\r\n\tvisible : true\r\n});\r\n\r\nvar animateXpromise;\r\nanimateX.addEventListener(\"click\", function() {\r\n\tblock.left = 0;\r\n\tblock.animate({\r\n\t\tleft : (win.rect.width - block.rect.width),\r\n\t\tduration : 1000\r\n\t});\r\n});\r\ncontainer.add(animateX);\r\n\r\nvar animateY = Ti.UI.createButton({\r\n\ttitle : \"Animate Y\"\r\n});\r\nanimateY.addEventListener(\"click\", function() {\r\n\tblock.animate({\r\n\t\ttop : 400,\r\n\t\tduration : 5000\r\n\t}, function() {\r\n\t\tTi.API.log(\"Y animation finished (\" + block.left + \",\" + block.top + \")\");\r\n\t});\r\n});\r\ncontainer.add(animateY);\r\n\r\nvar bgbutton = Ti.UI.createButton({\r\n\ttitle : \"BG Color\"\r\n});\r\nbgbutton.addEventListener(\"click\", function() {\r\n\tblock.animate({\r\n\t\tbackgroundColor : \"#0F0\",\r\n\t\tduration : 4000\r\n\t});\r\n});\r\ncontainer.add(bgbutton);\r\n\r\nvar opacitybutton = Ti.UI.createButton({\r\n\ttitle : \"Fade out\"\r\n});\r\nopacitybutton.addEventListener(\"click\", function() {\r\n\tblock.animate({\r\n\t\topacity : 0,\r\n\t\tduration : 2000\r\n\t});\r\n});\r\ncontainer.add(opacitybutton);\r\n\r\nvar opacitybutton2 = Ti.UI.createButton({\r\n\ttitle : \"Fade in\"\r\n});\r\nopacitybutton2.addEventListener(\"click\", function() {\r\n\tblock.animate({\r\n\t\topacity : 1,\r\n\t\tduration : 2000\r\n\t});\r\n});\r\ncontainer.add(opacitybutton2);\r\n\r\nvar transform2dbutton = Ti.UI.createButton({\r\n\ttitle : \"2D\"\r\n});\r\ntransform2dbutton.addEventListener(\"click\", function() {\r\n\tvar m = Ti.UI.create2DMatrix();\r\n\tblock.animate({\r\n\t\tduration : 4000,\r\n\t\ttransform : m.scale(2).rotate(720)\r\n\t});\r\n});\r\ncontainer.add(transform2dbutton);\r\n\r\nvar pause = Ti.UI.createButton({\r\n\ttitle : \"Pause X\"\r\n});\r\npause.addEventListener(\"click\", function() {\r\n\tanimateXpromise.pause();\r\n});\r\ncontainer.add(pause);\r\n\r\nvar resume = Ti.UI.createButton({\r\n\ttitle : \"Resume X\"\r\n});\r\nresume.addEventListener(\"click\", function() {\r\n\tanimateXpromise.resume();\r\n});\r\ncontainer.add(resume);\r\n\r\nvar cancel = Ti.UI.createButton({\r\n\ttitle : \"Cancel X\"\r\n});\r\ncancel.addEventListener(\"click\", function() {\r\n\tanimateXpromise.cancel();\r\n});\r\ncontainer.add(cancel);\r\n\r\nvar matixAnim = Ti.UI.createButton({\r\n\ttitle : \"Matrix Animation\"\r\n});\r\nmatixAnim.addEventListener(\"click\", function() {\r\n\tvar matrix = Ti.UI.create2DMatrix()\r\n\tmatrix = matrix.rotate(90);\r\n\tmatrix = matrix.scale(2, 2);\r\n\tvar a = Ti.UI.createAnimation({\r\n\t\ttransform : matrix,\r\n\t\tduration : 1000,\r\n\t\tautoreverse : true,\r\n\t\trepeat : 2\r\n\t});\r\n\tblock.animate(a);\r\n});\r\ncontainer.add(matixAnim);\r\n\r\nvar block = Ti.UI.createView({\r\n\tbackgroundColor : \"red\",\r\n\tleft : 10,\r\n\ttop : 110,\r\n\twidth : 20,\r\n\theight : 20\r\n});\r\n\r\nwin.add(container);\r\nwin.add(block);\r\nwin.open();\r\n{code}", "attachment": [ { "id": "37920", "filename": "app.js", "author": { "name": "aodukha", "key": "aodukha", "displayName": "Anatoliy Odukha", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-04-30T16:55:28.000+0000", "size": 2945, "mimeType": "text/plain" } ], "flagged": false, "summary": "Mobile Web: Cannot execute animation second time", "creator": { "name": "aodukha", "key": "aodukha", "displayName": "Anatoliy Odukha", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "aodukha", "key": "aodukha", "displayName": "Anatoliy Odukha", "active": true, "timeZone": "America/Los_Angeles" }, "environment": "Ti SDK 3.2", "comment": { "comments": [ { "id": "250363", "author": { "name": "dsefton", "key": "dsefton", "displayName": "Daniel Sefton", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Tested and confirmed on Samsung Galaxy S2 Android 2.3.6 with the Android Browser. Ti SDK 3.1 GA and 3.2 CI.", "updateAuthor": { "name": "dsefton", "key": "dsefton", "displayName": "Daniel Sefton", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-05-06T18:42:32.000+0000", "updated": "2013-05-06T18:42:32.000+0000" }, { "id": "250777", "author": { "name": "ypidstryhach_gl", "key": "ypidstryhach_gl", "displayName": "Yaroslav Pidstryhach", "active": true, "timeZone": "Europe/Helsinki" }, "updateAuthor": { "name": "ypidstryhach_gl", "key": "ypidstryhach_gl", "displayName": "Yaroslav Pidstryhach", "active": true, "timeZone": "Europe/Helsinki" }, "created": "2013-05-08T13:36:04.000+0000", "updated": "2013-05-08T13:36:04.000+0000" }, { "id": "422841", "author": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Resolving as \"Won't Fix\" as MobileWeb has been deprecated.", "updateAuthor": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2017-06-26T21:54:09.000+0000", "updated": "2017-06-26T21:54:09.000+0000" }, { "id": "436311", "author": { "name": "emerriman", "key": "emerriman", "displayName": "Eric Merriman ", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Closing as will not fix.", "updateAuthor": { "name": "emerriman", "key": "emerriman", "displayName": "Eric Merriman ", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-04-04T23:20:17.000+0000", "updated": "2018-04-04T23:20:17.000+0000" } ], "maxResults": 4, "total": 4, "startAt": 0 } } }