kopia lustrzana https://github.com/backface/turtlestitch
				
				
				
			shadow costumes and sounds of clones when modifying them programmatically
							rodzic
							
								
									387cdca5ab
								
							
						
					
					
						commit
						1c4165974d
					
				|  | @ -1755,19 +1755,10 @@ Process.prototype.reportCDR = function (list) { | |||
| }; | ||||
| 
 | ||||
| Process.prototype.doAddToList = function (element, list) { | ||||
|     var rcvr; | ||||
|     this.assertType(list, 'list'); | ||||
|     if (list.type) { | ||||
|         this.assertType(element, list.type); | ||||
|         // check whether the list is an attribute that needs to be shadowed
 | ||||
|         rcvr = this.blockReceiver(); | ||||
|         if (this.reportIsIdentical(list, rcvr.costumes)) { | ||||
|             rcvr.shadowAttribute('costumes'); | ||||
|             list = rcvr.costumes; | ||||
|         } else if (this.reportIsIdentical(list, rcvr.sounds)) { | ||||
|             rcvr.shadowAttribute('sounds'); | ||||
|             list = rcvr.sounds; | ||||
|         } | ||||
|         list = this.shadowListAttribute(list); | ||||
|     } | ||||
|     list.add(element); | ||||
| }; | ||||
|  | @ -1775,6 +1766,9 @@ Process.prototype.doAddToList = function (element, list) { | |||
| Process.prototype.doDeleteFromList = function (index, list) { | ||||
|     var idx = index; | ||||
|     this.assertType(list, 'list'); | ||||
|     if (list.type) { | ||||
|         list = this.shadowListAttribute(list); | ||||
|     } | ||||
|     if (this.inputOption(index) === 'all') { | ||||
|         return list.clear(); | ||||
|     } | ||||
|  | @ -1794,6 +1788,7 @@ Process.prototype.doInsertInList = function (element, index, list) { | |||
|     this.assertType(list, 'list'); | ||||
|     if (list.type) { | ||||
|         this.assertType(element, list.type); | ||||
|         list = this.shadowListAttribute(list); | ||||
|     } | ||||
|     if (index === '') { | ||||
|         return null; | ||||
|  | @ -1812,6 +1807,7 @@ Process.prototype.doReplaceInList = function (index, list, element) { | |||
|     this.assertType(list, 'list'); | ||||
|     if (list.type) { | ||||
|         this.assertType(element, list.type); | ||||
|         list = this.shadowListAttribute(list); | ||||
|     } | ||||
|     if (index === '') { | ||||
|         return null; | ||||
|  | @ -1825,6 +1821,20 @@ Process.prototype.doReplaceInList = function (index, list, element) { | |||
|     list.put(element, idx); | ||||
| }; | ||||
| 
 | ||||
| Process.prototype.shadowListAttribute = function (list) { | ||||
|     // private - check whether the list is an attribute that needs to be
 | ||||
|     // shadowed. Use only on typed lists for performance.
 | ||||
|     var rcvr = this.blockReceiver(); | ||||
|     if (list === rcvr.costumes) { | ||||
|         rcvr.shadowAttribute('costumes'); | ||||
|         list = rcvr.costumes; | ||||
|     } else if (list === rcvr.sounds) { | ||||
|         rcvr.shadowAttribute('sounds'); | ||||
|         list = rcvr.sounds; | ||||
|     } | ||||
|     return list; | ||||
| }; | ||||
| 
 | ||||
| // Process accessing list elements - hyper dyadic
 | ||||
| 
 | ||||
| Process.prototype.reportListItem = function (index, list) { | ||||
|  |  | |||
		Ładowanie…
	
		Reference in New Issue
	
	 jmoenig
						jmoenig