PDA

Просмотр полной версии : переопределить функцию у sprite


vav2001
13.01.2012, 17:20
Ребят просветите, сам пишу на С++ но пришлось столкнуться компиляцией проекта на ActionScript 3. Прочел немного книжку Мука по работе с классами для понимания дела, но вот в чем суть вопроса .....

не получается переопределить функцию от родительского класса

import flash.display.*;
internal class MyParameter extends flash.display.Sprite
{
public override function set width(arg1:Number):void
{
return;
}
}

Пишет: 1020: Метод, который помечен на переопределение, должен переопределять другой метод. ??

illuzor
13.01.2012, 17:55
import flash.display.Sprite;

internal class MyParameter extends Sprite {

public override function set width (value:Number) : void {
//return то зачем?
}
}

Stitch512
13.01.2012, 17:55
этот код рабочий, ошибка в другом месте

HardCoder
13.01.2012, 17:59
А разве override не должно стоять перед public?

КорДум
13.01.2012, 18:02
Разницы нет. Я бы сделал ставку на неверное точное соблюдение сигнатуры. arg1 != value

Stitch512
13.01.2012, 18:10
arg1 или value - разницы нет.

vav2001
13.01.2012, 18:30
да ребят вы правый код рабочий, пока шла модерация я это уже понял. просто пример кода упростил здесь чтобы понятней было. на самом деле класс наследовался 2 раза, и на первом наследовании был как internal находясь в другом сегменте...

странно другое, что это готовый чужой проект и ведь раньше как-то работал с таким опредением, но пришлось исправить на public.
лично я пользуюсь Flash Builder 4.6

еще маленький вопрос в чем назначение set и get в определении функций public function get ..... ?

Deimos747
13.01.2012, 18:34
В документации Adobe что-то абстрактное
1020 Метод, помеченный как override, имеет приоритет над другими методами.
Есть немного бредовая идея: попробуйте переопределить и get-метод

HardCoder
13.01.2012, 18:46
Есть немного бредовая идея: попробуйте переопределить и get-методГраждане, не забивайте голову догадками. Код полностью рабочий. Только что сам проверил. Я так полагаю что vav2001 выложил не весь свой код. И уверен что проблема совсем не в этих строках.

Dukobpa3
13.01.2012, 18:48
override public function set width(value:Number):void
{
super.width = value;
}

Норм проканало, в чем проблема то?

Vektor
13.01.2012, 19:16
import flash.display.*;
internal class MyParameter extends flash.display.Sprite//Не знаю, это нормально?
{
public override function set width(arg1:Number):void//А это ---->
return;//<----
}
}

etc
13.01.2012, 19:16
Странно, что код из декомпила.

Dukobpa3
13.01.2012, 19:21
Вот все думают что у них такой гениальный код шопипец, и его надо прятать.
Почему бы не скинуть целиком класс? Я сомневаюсь что его кто-то будет воровать.

Этот код рабочий, абсолютно. Проблема в другом.

vav2001
13.01.2012, 19:36
ребят спасибо большое за оперативность ! код действительно рабочий, вот только модерация жесткая, написал ответ час назад и ничего, аж неудобно перед вами ....

ребята вы правы все работает

Странно, что код из декомпила.

поймал с поличным ))

wvxvw
13.01.2012, 21:40
На форуме обсуждение исходников полученных врезультате декомпиляции запрещено.