Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Пятитысячная ошибка (http://www.flasher.ru/forum/showthread.php?t=211532)

zackscript 16.09.2015 19:03

Пятитысячная ошибка
 
Народ пищу сценарий по книге все правильно
Код AS3:

package 
{
        import flash.display.MovieClip
        import flash.display.NativeWindow;
        import flash.display.NativeWindowInitOptions;
        import flash.display.NativeWindowType;
        import flash.display.NativeWindowSystemChrome;
        import flash.events.MouseEvent;
        import flash.events.Event;
        import flash.display.Sprite;
        import flash.display.Stage;
        import flash.display.StageScaleMode;
        import flash.display.StageAlign;
        import flash.display.NativeWindowResize;
 
        public class ExampleWindow extends NativeWindow
        {
                private var _background:Sprite;
                private var _resizer:Sprite;
                public function ExampleWindow()
                {
                        var options:NativeWindowInitOptions = new NativeWindowInitOptions  ;
                        options.systemChrome = NativeWindowSystemChrome.NONE;
                        options.type = NativeWindowType.LIGHTWEIGHT;
                        options.transparent = true;
                        super(options);
                        _background = new Sprite  ;
                        drawBackground(200,200);
                        stage.addChild(_background);
                        width = 400;
                        height = 400;
                        stage.scaleMode = StageScaleMode.NO_SCALE;
                        stage.align = StageAlign.TOP_LEFT;
                        _background.addEventListener(MouseEvent.MOUSE_DOWN,StartMoveWin);
                        _resizer = new Sprite  ;
                        _resizer.graphics.lineStyle(0,0,0);
                        _resizer.graphics.beginFill(0xCCCCCC,1);
                        _resizer.graphics.drawRect(0,0,10,10);
                        _resizer.graphics.endFill();
                        _resizer.x = 180;
                        _resizer.y = 180;
                        stage.addChild(_resizer);
                        _resizer.addEventListener(MouseEvent.MOUSE_DOWN,StartResizeWin);
                        addEventListener("resizing",resizingHandler);
                }
                public function drawBackground(newWidth:Number,newHeight:Number):void
                {
                        _background.graphics.clear();
                        _background.graphics.lineStyle(0,0,0);
                        _background.graphics.beginFill(0x0000FF,0.5);
                        _background.graphics.drawRoundRectComplex(0,0,newWidth,newHeight - 10,20,20,20,1);
                        _background.graphics.endFill();
                }
                public function StartMoveWin(event:MouseEvent):void
                {
                        startMove();
                }
                private function resizingHandler(event:Event):void
                {
                        drawBackground(width,height);
                        _resizer.x = width - 20;
                        _resizer.x = height - 20;
                }
                private function StartResizeWin(event:MouseEvent):void
                {
                        startResize(NativeWindowResize.BOTTOM_RIGHT);
                }
        }
}

Пишет
Код:

строка 1        5000: В класс "ExampleWindow" должен входить подкласс "flash.display.MovieClip", так как он связывается с символом такого же типа в библиотеке.
В чем ошибка?

udaaff 16.09.2015 19:10

Ну судя по ошибке, ваш класс не является наследником мувиклипа, но при этом связан с символом соответствующего типа в библиотеке.
Ваш кэп.

caseyryan 16.09.2015 19:11

Ну, очевидно что этот ExampleWindow для чего-то залинкован к каком-то символу в библиотеке. А здесь он пытается расширить NativeWindow, при этом уже являясь мувиклипом. В as3 нет множественного наследования, поэтому класс не может расширять больше одного другого класса за раз.

Добавлено через 40 секунд
udaaff опять опередил :D

zackscript 16.09.2015 21:00

Вообще то я сам дописал строчку:
Код AS3:

import flash.display.MovieClip

в книге было без него
в книге не было сказано использовать компоненты
если что я создаю приложение AIR.

caseyryan 17.09.2015 07:30

Цитата:

Вообще то я сам дописал строчку:
Это ничего не меняет. Проблема не в этой строчке, а в том, что происходит двойственное наследование.
Цитата:

если что я создаю приложение AIR.
Я думаю, это и так всем понятно. Во флеш плеере нет NativeWindow

udaaff 17.09.2015 08:39

zackscript, выкладывайте свой проект.

zackscript 17.09.2015 17:04

Вложений: 1
Вот держите !

udaaff 18.09.2015 02:39

Вложений: 1
Вы не можете в качестве главного класса использовать ExampleWindow, т.к. как он не является наследником Sprite.

Вложение 31815

Самое простое, что можно сделать, что протестировать ваш класс, это нажать f9 и написать две строчки кода:
Код AS3:

var window:ExampleWindow = new ExampleWindow();
window.activate();


zackscript 18.09.2015 19:27

Udaaff Cпасибо , Но почему каждый раз "Сбой тестирования ролика при запуске"?
Сжирает оперативку ?

udaaff 18.09.2015 19:35

Создайте новый проект и попробуйте еще раз. Тот проект, что в архиве у меня тоже не запустился.


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

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