|
|
|||||
Регистрация: Jan 2012
Сообщений: 836
|
Проблема с removeChild
Constants.stageRef=stage; var igrok:player = new player; igrok.x = 200; igrok.y = 300; igrok.name = "player"; stage.addChild(igrok); Когда я пытаюсь его удалить, после нажатия кнопки Выдает такую фигню Цитата:
|
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
Вы добавили на stage -
а удаляете с this - Не правильно, когда добавляешь на stage. Добавлено через 1 минуту В Вашем случаи лучше без указания места добавления, просто addChild(...); |
|
|||||
Регистрация: Jan 2012
Сообщений: 836
|
Constants.stageRef=stage; var igrok:player = new player; igrok.x = 200; igrok.y = 300; igrok.name = "player"; addChild(igrok); |
|
|||||
[+1 16.07.13]
[+4 16.07.13] Регистрация: Oct 2005
Сообщений: 217
|
А Ваш класс player от какого класса унаследован?
Например, если от спрайта, то так должно работать removeChild(Sprite(igrok)); |
|
|||||
Регистрация: Jan 2012
Сообщений: 836
|
Не прокатило
|
|
|||||
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
А Вы это добавляете и удаляете в одном классе?
|
|
|||||
[+1 16.07.13]
[+4 16.07.13] Регистрация: Oct 2005
Сообщений: 217
|
А классов много, может выложите?
|
|
|||||
Регистрация: Jan 2012
Сообщений: 836
|
Да. Вот
package { import flash.display.MovieClip; import flash.events.MouseEvent; import flash.text.TextField; import flash.events.Event; import flash.display.DisplayObject; import flash.display.Stage; public class Main extends MovieClip { public var map:Array = [ [1,1,1,1,1,1,1,1,1,1,1,1], [1,0,0,2,1,1,1,1,1,2,0,1], [1,0,0,0,1,1,1,1,1,0,0,1], [1,0,2,0,0,1,1,1,1,0,1,1], [1,0,1,0,0,0,1,2,0,0,0,0], [1,0,0,1,0,0,1,0,0,0,0,0], [1,1,1,1,0,0,1,0,0,1,1,1], [1,0,0,0,0,0,0,0,0,0,0,1], [1,1,1,1,1,1,1,1,1,1,1,1], ]; public var size:uint = 50; public function Main() { btn.addEventListener(MouseEvent.CLICK, onClick); } private function onClick(e:MouseEvent):void{ if (login.text =="login" && pass.text=="pass"){ this.gotoAndStop(2); createvillage(); } else { res.text = "Вы ввели неправильные данные"; } } function createvillage() { for (var i:uint=0; i<map.length; i++) { for (var j:uint=0; j<map[i].length; j++) { if (map[i][j] > 0) { var obj:village = new village; obj.x = j*size; obj.y = i*size; obj.gotoAndStop(map[i][j]) addChild(obj); Constants.stageRef=stage; var igrok:player = new player; igrok.x = 200; igrok.y = 300; igrok.name = "player"; addChild(igrok); var buts:button = new button; buts.x = 277; buts.y = 540; buts.name = "btns"; addChild(buts); buts.addEventListener(MouseEvent.CLICK, onClicks); } function onClicks(e:MouseEvent):void{ removeChild(MovieClip(igrok)); } } } } } } package { import flash.display.MovieClip; import flash.events.Event; import flash.events.KeyboardEvent; import flash.ui.Keyboard; public class player extends MovieClip { var left_press:Boolean; var up_press:Boolean; var right_press:Boolean; var down_press:Boolean; var _speed:uint; public function player() { Constants.stageRef.addEventListener(KeyboardEvent.KEY_DOWN, keyDownListener); Constants.stageRef.addEventListener(KeyboardEvent.KEY_UP, keyUpListener); Constants.stageRef.addEventListener(Event.ENTER_FRAME, go); _speed = 3; } function keyDownListener (e:KeyboardEvent):void { if (e.keyCode==65) left_press = true; if (e.keyCode==87) up_press = true; if (e.keyCode==68) right_press = true; if (e.keyCode==83) down_press = true; } function keyUpListener(e:KeyboardEvent):void { if (e.keyCode==65) left_press = false; if (e.keyCode==87) up_press = false; if (e.keyCode==68) right_press = false; if (e.keyCode==83) down_press = false; } function go(e:Event):void { if (left_press) x -=_speed; if (up_press) y -=_speed; if (right_press) x +=_speed; if (down_press) y +=_speed; } } } |
|
|||||
[+1 16.07.13]
[+4 16.07.13] Регистрация: Oct 2005
Сообщений: 217
|
Все дело в том, что Вы объявляете igrok как локальную переменную, а локальные переменные доступны только в том методе, где Вы их объявляете. Можно сделать массив, в который запихивать всех игроков, а потом удалять их со сцены, обращаясь к ним через массив по индексу.
|
|
|||||
Регистрация: Jan 2012
Сообщений: 836
|
Цитата:
Вот к примеру создал массив, с элементами 1, 2. Как мне создать переменную, чтобы новый игрок по индексу попадал вместо элемента "1". Или не так совсем?)) И раз уж так, почему если public class player extends Main и когда я указываю в классе Main переменные public var left_press:Boolean; public var up_press:Boolean; public var right_press:Boolean; public var down_press:Boolean; public var _speed:uint; То при запуске, он говорит что нету таких переменных? |
Часовой пояс GMT +4, время: 00:20. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|