Как изменить размер содержимого 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;