Patrón de repetición en JavaScript
-
26-12-2019 - |
Pregunta
¿Cómo repetiría el patrón de transformación a continuación?
BoxesFx.prototype._setTransforms = function() {
this.transforms = {
'effect-1' : {
'next' : [
'translate3d(0, ' + (win.height/2+10) + 'px, 0)',
'translate3d(-' + (win.width/2+10) + 'px, 0, 0)',
'translate3d(' + (win.width/2+10) + 'px, 0, 0)',
'translate3d(0, -' + (win.height/2+10) + 'px, 0)',
],
'prev' : [
'translate3d(' + (win.width/2+10) + 'px, 0, 0)',
'translate3d(0, ' + (win.height/2+10) + 'px, 0)',
'translate3d(0, -' + (win.height/2+10) + 'px, 0)',
'translate3d(-' + (win.width/2+10) + 'px, 0, 0)'
]
}}}
Básicamente, estoy tratando de tener:
'translate3d(0, ' + (win.height/2+10) + 'px, 0)',
'translate3d(-' + (win.width/2+10) + 'px, 0, 0)',
'translate3d(' + (win.width/2+10) + 'px, 0, 0)',
'translate3d(0, -' + (win.height/2+10) + 'px, 0)'
Repetir N Cantidad de veces, podemos decir que N será 3, sin copiarlo y pegarlo en 3 veces.¿Hay alguna manera de duplicar una matriz?Siento que puedo ser confuso. Espero que lo explique bien
Solución
Simplemente defina la matriz fuera
var translate =[
'translate3d(0, ' + (win.height/2+10) + 'px, 0)',
'translate3d(-' + (win.width/2+10) + 'px, 0, 0)',
'translate3d(' + (win.width/2+10) + 'px, 0, 0)',
'translate3d(0, -' + (win.height/2+10) + 'px, 0)',
];
BoxesFx.prototype._setTransforms = function() {
this.transforms = {
'effect-1' : {
'next' : translate,
'prev' : translate
}}}
Las dos matrices que no tiene lo mismo, pero supongo que podrían ser, ya que no puede hacer referencia a una matriz dos veces y obtener dos matrices completamente diferentes?
Si necesita una nueva copia real de la matriz cada vez, puede hacer
'next' : translate.slice(0)
en lugar
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow