Собственно говоря, делаю маленькое приложение под iOS для тренировки. Идея — у меня есть карта мира, когда юзер нажимает на ту или иную страну, она, допустим, перекрашивается в другой цвет.
Плохая реализация, придуманная мной:
Взять карту, а сверху замостить ее кнопочками (не UIButton, т.к. все-таки хочется, чтобы кнопочка имела контур страны, а не прямоугольник, для этого, погуглив были найдены OBShapedButton). Как только юзер нажимает на кнопку, делать alpha = 0. В это время, под кнопками лежала сама карта, уже разноцветная. Вуаля — мы сменили цвет.
Но в реальности, реализация очень… как сказать, неповоротливая. Если я захочу чтобы страна могла сменить цвет дважды, а может 20 раз, нужно наложить 20 кнопочек.
Вопрос в том, как это сделать нормально? Вообще, хочется при этом работать с svg картами, но это уже мелочи. В принципе, вторая идея — обрисовка карты. Когда юзер дотрагивается до той или иной страны, мы перекрашиваем этот кусочек карты. Проблема заключается в том, как распознать, на какую страну кликнул юзер?
Или может вы предложите какие-нибудь более интересные решения. Большое спасибо.
>Проблема заключается в том, как распознать, на какую страну кликнул юзер?
Где-то видел такую реализацию: есть полноцветное изображение и есть его «карта», размерами соответствующая самому изображению. Карта полностью черная и на ней разными цветами нарисованы куски, соответствующие активным областям на исходном изображении. В итоге задача определения области клика сводится к определению цвета пикселя в координатах клика. Соответствия область-цвет прописаны в отдельной структуре.
Хм, неплохая идея. Единственное что — нужно будет побольше картинок наклепать, но все они весят совсем понемногу. Как я сразу не догадался).
Но, это отличный повод подучить cocos2D).