Как изменить размер содержимого CCScrollLayer? (класс расширения cocos2d)

В настоящее время я использую класс CCScrollLayer (в классах расширений cocos2d) для реализации системы меню. Он отлично работает, но мне бы хотелось, чтобы на экране были другие кнопки, а область прокрутки по умолчанию - весь экран.

Я пытался возиться с размером контента, но не играли в кости. После некоторого чтения я обнаружил, что размер содержимого установлен на размер экрана для поведения CCLayers. Пользователь предложил обернуть его в CCNode и масштабировать, но это не помогло.

Любые предложения или пример кода? Я должен думать, что это должно быть возможно.

3 ответа

Решение

Спасибо всем за помощь, к сожалению, кажется, что вы не можете изменить размер CCLayer (или contentSize не влияет на сенсорные события) без переписывания большого количества кода.

Однако я нашел обходной путь, который, кажется, работает. В событиях ccTouch, которые начинаются и перемещаются, я проверяю желаемые границы после преобразования моего UITouch в пространство cocos2D. Если они не в моих границах, я возвращаюсь, и в случае перемещения я вручную вызываю TouchEnded. TouchEnded также проверяет начальную точку касания, и если она выходит за границы, она игнорирует ее.

Вещи, кажется, работают как хотелось бы. Я опубликую больше информации, если найду ее. Еще раз спасибо всем.

CAScrollLayer удивительно прост, что может сбить с толку.

Просто добавьте к нему слой контента:

[_scrollLayer addSublayer:_contentLayer];

Чтобы установить прямоугольник, который вы хотите видеть на экране, установите границы или рамку слоя прокрутки:

[_scrollLayer setBounds:visibleBounds];

Установите размер содержимого соответственно. Размер контента может быть больше или меньше, это не имеет значения.

[_contentLayer setBounds:currentContextBounds];

Если содержание больше и вы хотите перейти к определенной точке, используйте scrollToPoint: или же scrollToRect: методы слоя прокрутки.

При желании вы должны реализовать свои собственные индикаторы прокрутки, бары и т. Д.

Хотя я использую табличное представление, а не представление прокрутки, оба имеют одного и того же родителя [представление прокрутки, дох]. Вы включили clipToBounds после установки размера контента?

Я бы порекомендовал использовать этот конструктор:

/**
 * Init this object with a given size to clip its content.
 *
 * @param size view size
 * @return initialized scroll view object
 */
- (id)initWithViewSize:(CGSize)size;
Другие вопросы по тегам