Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Проблема с parent.StartDrag() (http://www.flasher.ru/forum/showthread.php?t=125355)

Michaael 22.05.2009 11:50

Проблема с parent.StartDrag()
 
Перехожу на Ас3 и нарываюсь на мелкие непонятки...
Вобщем есть мувик1 в нем мувик2
при вызове из мувика2 свойство parent.startDrag();
пишет
1061: Call to a possibly undefined method StartDrag through a reference with static type flash.display:DisplayObjectContainer.
Уже беситься начал... Что я не так делаю... Класс мувиков мувиклип... проблемы не должно быть....Вроде они наследуют все эти свойства....
StartDrag(); напрямую в теле как родителя, так и мувика работает...

silin 22.05.2009 12:00

Sprite(parent).startDrag();
у DisplayObjectContainer нет startDrag

Michaael 22.05.2009 12:09

Я взял это из примера того же Астероид шторма.... что чуть повыше... Там в Коде почему то работает.... и без Sprite ,но и со спрайт не работает....
Может просто фишка какая то есть ? Trace(parent); выдает объект, тот что нужен.... и класс вроде у него movieclip

silin 22.05.2009 12:20

фишка скорее всего в отключенном strict mode компилятора

SunShadow 22.05.2009 12:26

Цитата:

1061: Call to a possibly undefined method StartDrag through a reference with static type flash.display:DisplayObjectContainer.
В самой ошибке все расписано: Вызов возможно неопределенного метода StartDrag через ссылку на тип DisplayObjectContainer.
когда вызываете parent получаете ссылку на DisplayObjectContainer который сам по себе не имеет метода startDrag(). Чтобы метод работал надо либо parent представить как объект имеющий такой метод то бишь Sprite(parent) приводит к типу Sprite, либо сделать так
Код AS3:

var o:* = parent;
o.startDrag();

в таком случае объект будет variant и у него будет позволительно вызвать метод, проверка на существование метода откладывается на момент исполнения.
А в примере с астероидами у автора был отключен StrictMode, поэтому при компиляции просто не было проверки, а у вас он включен)

Michaael 22.05.2009 13:35

Цитата:

А в примере с астероидами у автора был отключен StrictMode, поэтому при компиляции просто не было проверки, а у вас он включен)
Вот я и говорю про маленькие фишки :(((( часа 4 потратил на это...

Psycho Tiger 22.05.2009 21:59

Через кастинг как то лучше все таки...

darksranger 22.05.2009 22:07

Код AS3:

var sameObject:Sprite = MovieClip2.parent as Sprite
sameObject.startDrag()

я так понимаю это на обработке клика ? тоесть код что то вроде
Код AS3:

var sameSprite:Sprite = new Sprite()
var sameSprite2:Sprite = new Sprite()
addChild(sameSprite2)
sameSprite2.addChild(sameSprite)
sameSprite.addEventListener(MouseEvent.MOUSE_DOWN,sameFunction)
...
 
private function sameFunction(event:Event):void{
    // тогда тут проще будет
var sameSprite:Sprite = event.target.parent as Sprite
sameSprite.starDrag()
}

PS startDrag лучше использовать starDrag(false,new Rectange(x,y,width,heigth)), так как при starDrag(true), у меня обьекты вели себя не правильно


Часовой пояс GMT +4, время: 20:07.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.