![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Dec 2011
Сообщений: 3
|
Здравствуйте! есть класс для героя, и обьект "pl" который находится на сцене.
При выполнении выводит ошибку d.as, Line 85 1120: Обращение к несуществующего свойства pl. подскажите пожалуйста как можно решить эту задачу вот собственно сам код: package hero{ import flash.display.*; import flash.events.*; public class d extends MovieClip { var nywton=10; var grav:Number=5; var jumping:Boolean=false; var jumpPow:Number=0; public function d() { stage.addEventListener(KeyboardEvent.KEY_DOWN,okd); stage.addEventListener(Event.ENTER_FRAME,oef); } public function okd(evt:KeyboardEvent):void { if (evt.keyCode==38) { if (jumping!=true) { jumpPow=-50; jumping=true; } } } public function oef(evt:Event):void { if (jumping) { this.y+=jumpPow; jumpPow+=grav; if (this.hitTestObject(pl)) { jumping=false; } } if (!(this.hitTestObject(pl)) && !(jumping)) { this.y+=nywton; } } } } |
|
|||||
|
.
|
Ссылку на "объект pl" еще нужно получить. "pl", по всей видимости, есть значение поля "name" у какого-то визуального объекта, брошенного на timeline во время редактирования. Вы бы сначала получили бы ссылку на него
а потом бы можно и обратиться Последний раз редактировалось dimarik; 21.12.2011 в 20:26. |
|
|||||
|
Регистрация: Dec 2011
Сообщений: 3
|
Простите за нубский вопрос, но правильно лия использовал ваш совет?
package hero{ import flash.display.*; import flash.events.*; public class d extends MovieClip { private const _plObject:DisplayObject=super.getChildByName('pl'); var nywton=10; var grav:Number=5; var jumping:Boolean=false; var jumpPow:Number=0; public function d() { stage.addEventListener(KeyboardEvent.KEY_DOWN,okd); stage.addEventListener(Event.ENTER_FRAME,oef); super.hitTestObject(_plObject); } public function okd(evt:KeyboardEvent):void { if (evt.keyCode==38) { if (jumping!=true) { jumpPow=-50; jumping=true; } } } public function oef(evt:Event):void { if (jumping) { this.y+=jumpPow; jumpPow+=grav; if (this.hitTestObject(_plObject)) { jumping=false; } } if (!(this.hitTestObject(_plObject)) && !(jumping)) { this.y+=nywton; } } } } TypeError: Error #2007: Параметр hitTestObject не должен быть равен нулю. |
|
|||||
|
Регистрация: Mar 2011
Сообщений: 38
|
Если пытаться из описания класса обращаться к копиям объектов по их именам - всегда будут ошибки. Нужно проверить "pl" - это инстанс нейм или что?
Я в подобном случае делал немного иначе. В классе Main создал два контейнера для двух типов объектов (у меня их было много) Перебирая все объекты в этих контейнерах - делается проверка на хиттест. Найдя нужный объект - достаточно сделать на него ссылку (см. var someOBJ=BULET.getChildAt(k); someOBJ.life=0; ) и можно обращаться к его свойствам. package { import flash.display.*; import flash.events.*; public class Main extends MovieClip { var i; var k; var ENEMY:Sprite = new Sprite(); var BULET:Sprite = new Sprite(); var en01 = new enemyX(); var en02 = new enemyX(); var en03 = new enemyX(); public function Main() { addChild(ENEMY); addChild(BULET); //ENEMY****************** this.en01.x=200; this.en01.y=200; ENEMY.addChild(en01); this.en02.x=600; this.en02.y=100; ENEMY.addChild(en02); this.en03.x=300; this.en03.y=400; ENEMY.addChild(en03); //ENEMY****************** addEventListener(Event.ENTER_FRAME, B_E); } public function B_E(e) { for (i=0; i<ENEMY.numChildren; i++) { for (k=0; k<BULET.numChildren; k++) { if (ENEMY.getChildAt(i).hitTestObject(BULET.getChildAt(k))) { var someOBJ=BULET.getChildAt(k); someOBJ.life=0; } } } } } } Последний раз редактировалось MAPUTO; 22.12.2011 в 02:41. |
|
|||||
|
Регистрация: Dec 2011
Сообщений: 3
|
MAPUTO Спасибо разобрался!
|
![]() |
![]() |
Часовой пояс GMT +4, время: 01:03. |
|
|
« Предыдущая тема | Следующая тема » |
|
|