Pergunta

Como eu repetiria o padrão de transformação abaixo?

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)'
            ]
        }}}

Basicamente, estou tentando ter:

'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)'

repita n vezes, podemos dizer que n será 3, sem copiar e colar 3 vezes.Existe uma maneira de duplicar um array?Eu sinto que posso estar confuso..espero ter explicado bem

Foi útil?

Solução

Basta definir o array fora

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
        }}}

Os dois arrays que você tem não são iguais, mas presumo que possam ser, já que você não pode referenciar um array duas vezes e obter dois arrays completamente diferentes.

Se você precisar de uma nova cópia real do array a cada vez, poderá fazer

'next' : translate.slice(0)

em vez de

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top