PDA

Просмотр полной версии : Пятитысячная ошибка


zackscript
16.09.2015, 19:03
Народ пищу сценарий по книге все правильно
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
Вообще то я сам дописал строчку:
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
Вот держите !

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

31815

Самое простое, что можно сделать, что протестировать ваш класс, это нажать f9 и написать две строчки кода:
var window:ExampleWindow = new ExampleWindow();
window.activate();

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

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

zackscript
18.09.2015, 20:14
Получилось!