В цикле for в функции touchesBegan
node
имеет тип SKNode. Вам нужно опуститься до SKSpriteNode. Когда вы переходите на SKSpriteNode, вы можете изменить текстуру.
for node in tappedNodes {
if let tappedBalloon = node as? SKSpriteNode {
if tappedBalloon.name == "blue_balloon" {
// Set tapped balloon's texture
tappedBalloon.texture = // The texture you want here.
// Handle tapping a balloon, such as increasing the score.
}
}
}
Я заметил в вашем цикле for, что у вас есть один и тот же код внутри блоков if для синих и фиолетовых воздушных шаров. Вы можете легко переместить дублирующийся код в его собственную функцию, popBalloon
или как вы хотите ее назвать, и вызывать эту функцию, когда вы нажимаете на шарик. Если между шариками нет разницы, кроме их цвета, вы можете просто дать каждому шарику имя "balloon"
и проверить одно имя вместо проверки нескольких названий шариков. Это сократило бы ваш код.
Вы также можете упростить понимание своего кода, создав структуру или класс Balloon
и указав в качестве одного из свойств спрайтовый узел. Напишите код, который имеет дело с воздушными шарами вместо узлов спрайтов и другими терминами SpriteKit.
Немного менее подробное решение будет указывать somepath
внутри <pathconvert>
:
<pathconvert property="relative.dir">
<path location="${somepath}"/>
<globmapper from="${basedir}/*" to="./*" />
</pathconvert>
Это был подход, который хорошо работал для меня в Windows, адаптированный из ответа @Garns:
<path id="uploadFilePath">
<fileset dir="${wcm.folderName}">
<include name="*" />
<exclude name="*.attr" />
</fileset>
</path>
<pathconvert property="relFilelist">
<path refid="uploadFilePath" />
<mapper>
<globmapper from="${wcm.folderName}/*" to="*" handledirsep="true" />
</mapper>
</pathconvert>
Я думаю, что handledirsep = "true" очень важен в globmapper, он не работал для в противном случае, независимо от того, сколько я возился с прямой / обратной косой чертой. (Я делаю все свои косые черты как вперед в моих скриптах ant, чтобы я мог запускать их в unixy системах.) Моя версия Ant - 1.8.1.
местоположение
автоматически расширяет путь, используя базис проекта . Поэтому я думаю, что опция
значение
дает лучшее управление:
<property name="base.dir" value="/home/myuser"/>
и
<property name="somedir.dir" value="${base.dir}/some_dir"/>
Возможно, вы сможете использовать базовое имя Ant
задача . Если у вас есть:
<property name="somedir" value="/path/to/file/here" />
<basename file="${somedir}" property="somebasedir" />
<echo>${somebasedir}</echo>
Отображается значение «здесь». Это только кажется, что дает вам последний каталог, который может не получить достаточно того, что вы хотите.