2017-09-07 3 views
0
var size = cc.winSize; 
    var scrollView = new ccui.ScrollView(); 
    scrollView.setDirection(ccui.ScrollView.DIR_VERTICAL); 
    scrollView.setTouchEnabled(true); 
    scrollView.setBounceEnabled(true); 
    scrollView.setBackGroundColorType(ccui.Layout.BG_COLOR_SOLID); 
    scrollView.setBackGroundColor(cc.color(255,255,255)); 
    //scrollView.setBackGroundImageScale9Enabled(true); 
    scrollView.setContentSize(cc.size(720, 1280)); 
    scrollView.setInnerContainerSize(cc.size(720, (1280*2))); 
    scrollView.setAnchorPoint(cc.p(0.5, 0.5)); 
    scrollView.setPosition(cc.p(360, 640)); 
    this.addChild(scrollView); 

Die Position der Schaltfläche beginnt in der Mitte.Cocos2dx - js - ScrollView - Kann nicht positioniert werden

enter image description here

 scrollView.setPosition(cc.p(360, 0)); 

wenn ich die y-Position zu ändern, gibt es anders aussehen.

enter image description here

Antwort

0

Ich glaube, Sie den gleichen Fehler machen, die ich gemacht, als ich zum ersten Mal mit cocos2d-x zu arbeiten begann. Ich ging davon aus, dass, wenn Sie den Ankerpunkt eines Objekts ändern, auch die Positionierung seiner Kinder beeinflusst wird, dies ist jedoch bei cocos2d-x nicht der Fall. Das Ändern der Ankerposition wirkt sich nur auf das Objekt selbst aus. Seine Kinder werden immer von der unteren linken Ecke des Objekts positioniert.

Wenn Sie also den Ankerpunkt der Bildlaufansichten bei (0,0) und seine Position bei (0,0) belassen, erhalten Sie genau das gleiche Ergebnis.

Auch sollte ich ein paar Dinge über Scroll-Ansichten hinweisen.

  • Wenn Sie addChild auf einer Scroll-Ansicht nennen es sie an den Innenbehälter fügt nun die Rolle nicht Ansicht selbst, so dass die Kinder (dh Taste in Ihrem Fall) von der unteren linken Ecke des Innenbehälters angeordnet ist, .

  • Der innere Behälter scrollt nach oben, so dass in Ihrem Fall die Hälfte des inneren Behälters unter dem Bildschirm ist.

Hoffe, das hilft!

Verwandte Themen