Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Гришина преддипломная практикаа.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
370.18 Кб
Скачать
  1. Реализация классов

На рисунке 1 представлена диаграмма классов разрабатываемой информационной системы.

Рисунок 5 – Диаграмма классов

Мною были реализованы следующие 2 класса – Book, BookExample.

Класс Book

package gadgets.book

{

import flash.display.*;

import flash.events.*;

import flash.filters.*;

import flash.geom.*;

import flash.text.*;

/**

* генерируется, когда страница перевернута и прибыла на место

* @eventType book.events.BookEvent

*/

[Event(name = "flip", type = "silin.book.events.BookEvent")]

/**

* генерируется при смене страницы(разворота)

* @eventType book.events.BookEvent

*/

[Event(name = "changePage", type = "silin.book.events.BookEvent")]

/**

* имитация листания страниц <br/>

* листается только за нижнию часть страниц<br/>

*/

public class Book extends Sprite

{

/**

* режим переворачивания сразу на заданную страницу

*/

public static const JUMP:String = "jump";

/**

* режим постраничного переворачивания до заданной страницы

*/

public static const LEAF:String = "leaf";

/**

* режим переворачивания: <br/>

* LEAF-перелистывание по одной;<br/>

* JUMP-сразу пачкой.

*/

public var mode:String = JUMP;

/**

* класс диплейОбжекта для прелоадера контента страниц

*/

public var preloaderIcon:Class;

/**

* класс диплейОбжекта для для отображения облома загрузки

*/

public var errorIcon:Class;

//приваты сеттеров

private var _paper:BitmapData;

private var _wheelLeaf:Boolean = true;

private var _mouseLeaf:Boolean = true;

private var _contentLeaf:Boolean = false;

private var _turnSpeed:Number = 6;

private var _leftPage:PageTemplet = new PageTemplet();

private var _rightPage:PageTemplet = new PageTemplet();

private var _backSide:PageTemplet = new PageTemplet();

private var _nextSide:PageTemplet = new PageTemplet();

private var _backMask:PageMask=new PageMask();

private var _nextMask:PageMask=new PageMask();

private var _rightMask:PageMask = new PageMask();

private var _shadow:Shape=new Shape();

private var _pageW:Number;

private var _pageH:Number;

private var _pageD:Number;

private var _bookW:Number;

private var _targetPoint:Point = new Point();

private var _cornerPoint:Point = new Point();

private var _autoPoint:Point = new Point();

private var _bottomPoint:Point = new Point();

private var _mouseDownPoint:Point;

private var _pagePoints:Array;

private var _flipTarget:int = -1;//-1 нет вертелки

private var _dir:Boolean;

private var _drag:Boolean=false;

private var _changed:Boolean = false;//страница сменилась во время манипуляций

static private const SHADOW:DropShadowFilter = new DropShadowFilter(3, 140, 0x666666, 0.3, 16, 16);

static private const GLOW:GlowFilter = new GlowFilter(0x666666, 0.5, 5, 5, 2, 3);

static private const BLUR:BlurFilter = new BlurFilter(16, 16);

private var _currentPage:int=-1;

private var _dataProvider:Array/*PageContent*/=[];

private var _queueArr:Array;

/**

* constructor

*/

public function Book(width:Number=0, height:Number=0)

{

_leftPage.filters = [GLOW];

_rightPage.mask = _rightMask;

_rightPage.filters = [GLOW];

_nextSide.mask = _nextMask;

_backSide.mask = _backMask;

_backSide.filters = [SHADOW];

_shadow.filters = [BLUR];

addChild(_leftPage);

addChild(_rightPage);

addChild(_shadow);

addChild(_nextSide);

addChild(_backSide);

addChild(_rightMask);

addChild(_nextMask);

addChild(_backMask);

if (width && height)

{

setSize(width, height);

}

addEventListener(Event.ADDED_TO_STAGE, onStage);

}

/**

* установка размеров

* @param pageWidth

* @param pageHeight

*/

public function setSize(pageWidth:Number, pageHeight:Number):void

{

_pageW = pageWidth;

_pageH = pageHeight;

_pageD = Math.sqrt(_pageW * _pageW + _pageH * _pageH);

_bookW = 2 * _pageW;

_rightPage.x = _pageW;

_nextSide.x = _pageW;

_targetPoint = new Point(_bookW, _pageH);

_cornerPoint = new Point(_bookW, _pageH);

_autoPoint = null;

_leftPage.y = _pageH;

_rightPage.y = _pageH;

_backSide.y = _pageH;

_nextSide.y = _pageH;

_rightPage.setSize(_pageW, _pageH);

_leftPage.setSize(_pageW, _pageH);

_backSide.setSize(_pageW, _pageH);

_nextSide.setSize(_pageW, _pageH);

}

/**

* добавляет страницу(экземпляр PageContent) в конец

* @param data

*/

public function addPage(data:PageContent):void

{

_dataProvider.push(data);

startRender();

//добавляем индекс в очередь загрузки

_queueArr.push(_dataProvider.length - 1 );

//если очередь была пуста (загрузка закончилась уже), то стартуем загрузку

if (_queueArr.length == 1)

{

loadCurrent();

}

}

/**

* переход на страницу num

* @param num

*/

public function gotoPage(num:int):void

{

mode == JUMP ? jumpToPage(num) : leafToPage(num);

}

/**

* переход на следующую

*/

public function nextPage():void

{

jumpToPage(currentPage + 2);

}

/**

* переход на предыдущую

*/

public function prevPage():void

{

jumpToPage(currentPage-2);

}

/**

* переход последнюю страницу

*/

public function lastPage():void

{

gotoPage(length - 1);

}

/**

* переход на первую страницу

*/

public function firstPage():void

{

gotoPage(0);

}

//инициализация листенеров при добавлении на сцену

private function onStage(e:Event):void

{

removeEventListener(Event.ADDED_TO_STAGE, onStage);

if(_wheelLeaf) addEventListener(MouseEvent.MOUSE_WHEEL, omMouseWheel);

if(_mouseLeaf) addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);

stage.addEventListener(MouseEvent.MOUSE_UP, onStageMouseUp);

}

//глобальный MouseUp

private function onStageMouseUp(e:MouseEvent):void

{

removeEventListener(MouseEvent.MOUSE_MOVE, onMouseDrag);

var rightSide:Boolean = (mouseX > _pageW);

if (!_drag) return;//если отпускаем не по делу

_drag = false;

_targetPoint = new Point( rightSide ? 2 * _pageW : 0, _pageH);

// меняем разворот, если отпустили на другой стороне

if (_dir != rightSide) {

_currentPage += rightSide ? -2 : 2;

dispatchEvent(new BookEvent(BookEvent.CHANGE_PAGE, _currentPage));

_changed = true;

}else {

_dir = !_dir;

}

}

//обработчик колеса мыши

private function omMouseWheel(evnt:MouseEvent):void

{

evnt.delta < 0 ? nextPage() : prevPage();

}

//локальный MouseDown самой книги

private function onMouseDown(e:MouseEvent):void

{

//ситуация: не ворочаем за кконтент и клик приходится на кого-то из детей

if (!_contentLeaf && e.target != this) return;

//стартуем переворачивание только если потянули, а иначе пусть будет клик или что там еще надо

addEventListener(MouseEvent.MOUSE_MOVE, onMouseDrag);

}

//обработчик движения мыши в нажатом состоянии

private function onMouseDrag(evnt:MouseEvent):void

{

removeEventListener(MouseEvent.MOUSE_MOVE, onMouseDrag);

_dir = mouseX > _pageW;

//некуда крутить

if (_dir && currentPage > length - 3 || !_dir && currentPage == 0) return;

_flipTarget = -1;

_drag=true;

_targetPoint=new Point(_dir ? 0 : _bookW, _pageH);

_cornerPoint = new Point(_dir ? _bookW : 0, _pageH);

//расставляем контент

if (_dir)

{

setContent(currentPage+3, currentPage+2, currentPage, currentPage+1);

}else{

setContent(currentPage+1, currentPage, currentPage-2, currentPage-1);

}

startRender();// _needRender = true;

render();

}

//расставляет битмапы по местам

private function setContent(next:int, back:int, left:int, right:int):void

{

if (next > length-1) next = -1;

if (back > length-1) back = -1;

if (left > length-1) left = -1;

if (right > length-1) right = -1;

_nextSide.setContent(next);

_backSide.setContent(back);

_leftPage.setContent(left);

_rightPage.setContent(right);

}

//переворот на заданную

private function jumpToPage(page:int):void

{

if (running) return; //игнор во время переворота

var dn:int = page - (page % 2) - currentPage;//на сколько вертеть (с учетом нечета)

var valid:Boolean = dn != 0 && page >= 0 && page < length;

if (!valid) return;//не надо ничего

_dir = dn > 0;

_autoPoint = new Point(0.25 * _pageW, _pageH / 2);

_cornerPoint = new Point(_dir ? 2 * _pageW:0, _pageH);

_targetPoint = new Point(_dir ? 0 : 2 * _pageW, _pageH);

var oldPage:int = currentPage;

currentPage += dn;

if (_dir )

{

setContent(currentPage + 1, currentPage, oldPage, oldPage + 1);

}else{

setContent(oldPage + 1, oldPage, currentPage, currentPage + 1);

}

dispatchEvent(new BookEvent(BookEvent.CHANGE_PAGE, _currentPage));

_changed = true;

startRender();// _needRender = true;

_flipTarget = -1;//прекращаем последовательное перелистывание

}

// старт перелистывания

private function leafToPage(page:int):void

{

_flipTarget = 2 * Math.floor(page / 2);// совместимость с currentPage

nextFlip();

}

//следующий шаг, если включена листалка

private function nextFlip():void

{

if (_flipTarget == currentPage)

{

_flipTarget = -1;

return;

}

var tmpTarget:int = _flipTarget;//jumpToPage обнуляет _flipTarget, а здесь этого не надо

currentPage > _flipTarget ? prevPage() : nextPage();

_flipTarget = tmpTarget;

}

private function startRender():void

{

addEventListener(Event.ENTER_FRAME, render);

}

private function stopRender():void

{

removeEventListener(Event.ENTER_FRAME, render);

}

private function render(e:Event=null):void

{

var mtrx:Matrix;

var gr:Graphics;

if(_drag) {

_targetPoint = _autoPoint || new Point(Math.max(0, Math.min(mouseX, _bookW - 8)), mouseY);

}

var pos:Number = _cornerPoint.x / _bookW;

var easy:Number = 1 + (_dir ? 1.25 * pos : 1 - pos) * _turnSpeed;

if(_autoPoint){

_autoPoint.x += (_targetPoint.x - _autoPoint.x) / easy;

_autoPoint.y += (_targetPoint.y - _autoPoint.y) / easy;

}

var targ:Point = _autoPoint || _targetPoint;

_cornerPoint.x += (targ.x - _cornerPoint.x) / easy;

_cornerPoint.y += (targ.y - _cornerPoint.y) / easy;

_bottomPoint = new Point(Math.max((_bookW + _cornerPoint.x)/2,_pageW),_pageH);// нельзя оторвать нижний переплет

////центральный угол

setDist(_cornerPoint, _bottomPoint, _bookW - _bottomPoint.x);//не дальше ширины..

setDist(_cornerPoint, new Point(_pageW, 0), _pageD);//не дальще диагонали от верхнего переплета

//разворачиваем-ставим

_backSide.rotation = Math.max( -40, 180 / Math.PI * angle(_bottomPoint, _cornerPoint));

_backSide.x = _cornerPoint.x;

_backSide.y = _cornerPoint.y;

var dPoint:Point = _backSide.pointToParent(new Point(_pageW, -_pageH));

var corrX:Number = _pageW - dPoint.x;

if(corrX>0){

_backSide.x = _cornerPoint.x += corrX;

_backSide.y = _cornerPoint.y -= dPoint.y;

_bottomPoint.x += corrX;

}

_pagePoints = [new Point(0, 0), new Point(0, -_pageH), new Point(_pageW, -_pageH), new Point(_pageW, 0)];

for (var i:int = 0; i < 4; i++)

{

_pagePoints[i] = _backSide.pointToParent(_pagePoints[i]);

}

var xR:Point = getRightCross();

var xT:Point = getTopCross();

//nextPage mask

var nextMaskArr:Array = [_bottomPoint, new Point(_bookW, _pageH)];

if(xR){

nextMaskArr.push(xR);

}else{

nextMaskArr.push(new Point(_bookW, 0));

nextMaskArr.push(xT);

}

_nextMask.drawPoly(nextMaskArr);

//_backSide mask

var backMaskArr:Array = [_cornerPoint, _bottomPoint];

if(xR){

backMaskArr.push(xR);

}else{

backMaskArr.push(xT);

backMaskArr.push(_pagePoints[1]);

}

_backMask.drawPoly(backMaskArr);

//_rightPage mask

var backCover:Boolean = _backSide.page == length - 1;

var rightMaskArr:Array = [new Point(_pageW, 0), new Point(_pageW, _pageH)];

if (backCover)

{

rightMaskArr.push(_bottomPoint);

if (xR) rightMaskArr.push(xR,new Point(_bookW, 0));

rightMaskArr.push(xT);

}else

{

rightMaskArr.push(new Point(_bookW, _pageH), new Point(_bookW, 0));

}

_rightMask.drawPoly(rightMaskArr);

var kAdabt:Number = _cornerPoint.x < _pageW ? _cornerPoint.x / _pageW : 1;

var sw:Number = Point.distance(_cornerPoint, _bottomPoint);

var sw1:Number = xR ? 0 : Point.distance(xT, _pagePoints[1]);

sw *= kAdabt;

sw1 *= kAdabt;

var sh:Number = Point.distance(_bottomPoint, xR || xT);

_shadow.rotation = 270 + 180 / Math.PI * angle(_bottomPoint, xR || xT);

var fi:Number = -Math.PI / 180 * _shadow.rotation;

mtrx= new Matrix();

mtrx.createGradientBox(sw, sh, fi, 0, 0);

gr = _shadow.graphics;

gr.clear();

gr.beginGradientFill(GradientType.LINEAR, [0, 0], [0.1, 0], [0x00, 0xCC], mtrx);

gr.lineTo(sw, 0);

gr.lineTo(sw1, -sh);

gr.lineTo(0, -sh);

gr.lineTo(0, 0);

gr.endFill();

_shadow.x = _bottomPoint.x;

_shadow.y = _bottomPoint.y;

var maxAlpha:Number=_cornerPoint.x/_pageW;//макс. альфа

var tp:Point=backMaskArr[3]||backMaskArr[2];

fi= Math.atan2(backMaskArr[2].x+tp.x-_bottomPoint.x-_cornerPoint.x,backMaskArr[2].y+tp.y-_bottomPoint.y-_cornerPoint.y);

sw=Math.max(Point.distance(_bottomPoint,_cornerPoint),Point.distance(_pagePoints[1],xT))+10;

sh = _pageH;

gr = _backSide.shade.graphics;

gr.clear();

mtrx = new Matrix();

mtrx.createGradientBox(sw, sh, fi, 0, 0);

gr.beginGradientFill(GradientType.LINEAR, [0, 0xFFFFFF, 0], [0.05, 0.25 * kAdabt, 0.05], [0, 0x66, 0xff], mtrx );

gr.moveTo( -5, 0);

gr.lineTo(sw, 0);

gr.lineTo(sw, sh);

gr.lineTo( -5, sh);

gr.lineTo( -5, 0);

gr.endFill();

gr.endFill();

if (!_drag && Point.distance(_cornerPoint, _targetPoint) < 1 && _shadow.rotation >= 0)

{

currentPage = _currentPage;

_autoPoint = null;

_shadow.graphics.clear();

if (_changed) {

dispatchEvent(new BookEvent(BookEvent.FLIP, currentPage));

_changed = false;

}

if (_flipTarget >= 0) //если включена последовательная листалка, запускаем следующий переворот

{

nextFlip();

_backMask.clear();

_nextMask.clear();

render();

}else//или останавливаем все

{

setContent( -1, -1, _currentPage, _currentPage + 1);

stopRender();

}

}

}

//пересечение с верхней кромкой

private function getTopCross():Point

{

var p3:Point = _pagePoints[1];

var p4:Point = _pagePoints[2];

var x:Number;

if(Math.abs(p4.y-p3.y)<30) {

x = _bottomPoint.x + (_pagePoints[1].x - _pagePoints[0].x) / 2;

}else{

var b:Number = (p4.y - p3.y) / (p4.x - p3.x);

var a:Number = p3.y - b * p3.x;

x = -a / b;

}

if(x<_pageW)x=_pageW;

return new Point(x,0);

}

//пересечение с правой кромкой

private function getRightCross():Point

{

var p3:Point = _pagePoints[0];

var p4:Point = _pagePoints[1];

if (p4.x == p3.x) return p4.x == 2 * _pageW ? new Point(_bookW, 0) : null;

var b:Number = (p4.y - p3.y) / (p4.x - p3.x);

var p:Point = new Point(2 * _pageW, p3.y + b * (2 * _pageW - p3.x));

if (p.y<0 || p.y>_pageH) return null;

return p;

}

//создает очередь загрузки и запускает, если есть чего

private function createQueue():void

{

_queueArr = [];

var data:PageContent;

for (var i:int = 0; i < _dataProvider.length; i++)

{

data = _dataProvider[i];

//если есть урл, пихаем в очередь

if (data && data.url)_queueArr.push(i);

}

if (_queueArr.length)

{

_queueArr.sort(sortFunction);

loadCurrent();

}

}

//грузит первую из очереди

private function loadCurrent():void

{

var content:PageContent = _dataProvider[_queueArr.shift()];

content.addEventListener(Event.COMPLETE, shiftQueue);

content.addEventListener(IOErrorEvent.IO_ERROR, shiftQueue);

content.load();

}

//обработчик зпгрузки/ошибки

private function shiftQueue(evnt:Event):void

{

evnt.target.removeEventListener(Event.COMPLETE, shiftQueue);

evnt.target.removeEventListener(IOErrorEvent.IO_ERROR, shiftQueue);

PageContent(evnt.target).centerLoaderContent(pageWidth, pageHeight);

if (_queueArr.length)

{

_queueArr.sort(sortFunction);

loadCurrent();

}

}

//по удаленности от текущей

private function sortFunction(a:int, b:int):Number

{

return Math.abs(currentPage - a) < Math.abs(currentPage - b) ? -1 : 1;

}

/**

* ширина листа

*/

public function get pageWidth():Number { return _pageW; }

/**

* высота листа

*/

public function get pageHeight():Number { return _pageH; }

/**

* текущая левая страница (0,2,4..)

*/

public function get currentPage():int { return _currentPage; }

public function set currentPage(value:int):void

{

//отсчет всегда по левой четной

value = value - value % 2;

if (value != _currentPage)

{

_currentPage = value;

setContent( -1, -1, _currentPage, _currentPage + 1);

//render();

dispatchEvent(new BookEvent(BookEvent.CHANGE_PAGE, _currentPage));

}

}

/**

* общее число страниц (включая отсутствующие - нулевую, например )

*/

public function get length():int { return _dataProvider.length; }

/**

* массив PageContent

*/

public function get dataProvider():Array/*PageContent*/ { return _dataProvider; }

public function set dataProvider(value:Array/*PageContent*/):void

{

_dataProvider = value;

//спускаем ссылку темплетам

_leftPage.dataProvider = value;

_rightPage.dataProvider = value;

_backSide.dataProvider = value;

_nextSide.dataProvider = value;

//определяем мувики прелоадера и ошибки загрузки, если есть

var preloader:DisplayObject;

var error:DisplayObject;

for (var i:int = 0; i < _dataProvider.length; i++)

{

var pageContent:PageContent = _dataProvider[i];

if (pageContent && pageContent.url) {

if (preloaderIcon)

{

preloader = new preloaderIcon();

preloader.x = pageWidth / 2;

preloader.y = pageHeight / 2;

pageContent.preloaderIcon = preloader;

}

if (errorIcon)

{

error = new errorIcon();

error.x = pageWidth / 2;

error.y = pageHeight / 2;

pageContent.errorIcon = error;

}

}

}

//запускаем загрузку

createQueue();

//включаем обсчет

startRender();

}

/**

* темп переворачивания в диапазоне 0...10 (default 5); <br/>

* 0 - без анимации.

*/

public function get speed():Number { return 11 - _turnSpeed; }

public function set speed(value:Number):void

{

_turnSpeed = 11 - value;

if (_turnSpeed < 0 || _turnSpeed >= 11)

{

_turnSpeed = 0;

}

}

public function get paper():BitmapData { return _paper; }

public function set paper(value:BitmapData):void

{

_paper = value;

_leftPage.paper = value;

_rightPage.paper = value;

_backSide.paper = value;

_nextSide.paper = value;

}

/**

* надо ли листать колесом мыши

*/

public function get wheelLeaf():Boolean { return _wheelLeaf; }

public function set wheelLeaf(value:Boolean):void

{

_wheelLeaf = value;

_wheelLeaf ? addEventListener(MouseEvent.MOUSE_WHEEL, omMouseWheel) : removeEventListener(MouseEvent.MOUSE_WHEEL, omMouseWheel);

}

/**

* надо ли листать мышкой

*/

public function get mouseLeaf():Boolean { return _mouseLeaf; }

public function set mouseLeaf(value:Boolean):void

{

_mouseLeaf = value;

_mouseLeaf ? addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown) : removeEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);

}

/**

* надо ли листать при клике-драге по активному (mouseEnabled=true) коненту страниц

*/

public function get contentLeaf():Boolean { return _contentLeaf; }

public function set contentLeaf(value:Boolean):void

{

_contentLeaf = value;

}

}

}

Класс BookExample

package

{

import com.bit101.components.*;

import flash.display.*;

import flash.events.*;

import flash.filters.*;

import flash.text.*;

import gadgets.book.*;

import gadgets.Preloader;

import flash.text.TextFieldType;

import flash.text.TextField;

import flash.display.Loader;

import flash.display.SimpleButton;

import flash.ui.Mouse;

import flash.geom.Rectangle;

public class BookExample extends Sprite

{

private var _book:Book;

private var _tablo:Label;

var t:TextField = new TextField();

var t2:TextField = new TextField();

var eg:TextField = new TextField();

var ts:TextField = new TextField();

var Ts:TextField = new TextField();

var gs:TextField = new TextField();

var p:TextField = new TextField();

var p2:TextField = new TextField();

var n:TextField = new TextField();

var n2:TextField = new TextField();

var t1:TextField = new TextField();

var B:TextField = new TextField();

var t21:TextField = new TextField();

var eg1:TextField = new TextField();

var ts1:TextField = new TextField();

var Ts1:TextField = new TextField();

var gs1:TextField = new TextField();

var p1:TextField = new TextField();

var p21:TextField = new TextField();

var n1:TextField = new TextField();

var n21:TextField = new TextField();

var t11:TextField = new TextField();

var B1:TextField = new TextField();

var btn:CheckBox = new CheckBox;

public function BookExample():void

{

if (stage) init();

else addEventListener(Event.ADDED_TO_STAGE, init);

}

private function init(e:Event = null):void

{

stage.displayState = StageDisplayState.FULL_SCREEN;

removeEventListener(Event.ADDED_TO_STAGE, init);

stage.align = StageAlign.TOP_LEFT;

stage.scaleMode = StageScaleMode.NO_SCALE;

ToolTip.init(stage, {textalign: 'center', opacity: 50, defaultdelay: 500});

_book = new Book(610, 700);

_book.x = 30;

_book.y = 30;

//иконка загрузки

_book.preloaderIcon = Preloader;

//иконка для обозначения ошибки/невозможности загрузки

_book.errorIcon = errorMc;

//поля для таблицы в расчетах

t.type = "input";

t.width = 50;

t.height = 50;

t.x = 85;

t.y = 95;

t.text = " 0.00";

t.setTextFormat(new TextFormat("Cambria", 16, 0x990099, false, false));

t2.type = "input";

t2.width = 50;

t2.x = 85;

t2.y = 138;

t2.text = " 0.00";

t2.setTextFormat(new TextFormat("Cambria", 16, 0x990099, false, false));

n.type = "input";

n.width = 40;

n.x = 148;

n.y = 95;

n.text = " 00";

n.setTextFormat(new TextFormat("Cambria", 16, 0x990099, false, false));

n2.type = "input";

n2.width = 40;

n2.x = 148;

n2.y = 138;

n2.text = " 00";

n2.setTextFormat(new TextFormat("Cambria", 16, 0x990099, false, false));

p.type = "input";

p.width = 40;

p.x = 200;

p.y = 95;

p.text = " 000";

p.setTextFormat(new TextFormat("Cambria", 16, 0x990099, false, false));

p2.type = "input";

p2.width = 40;

p2.x = 200;

p2.y = 138;

p2.text = " 000";

p2.setTextFormat(new TextFormat("Cambria", 16, 0x990099, false, false));

ts.type = "input";

ts.width = 50;

ts.x = 275;

ts.y = 119;

ts.text = " 000";

ts.setTextFormat(new TextFormat("Cambria", 16, 0x990099, false, false));

Ts.type = "input";

Ts.width = 50;

Ts.x = 358;

Ts.y = 119;

Ts.text = " 000";

Ts.setTextFormat(new TextFormat("Cambria", 16, 0x990099, false, false));

gs.type = "input";

gs.width = 50;

gs.x = 442;

gs.y = 119;

gs.text = " 0.00";

gs.setTextFormat(new TextFormat("Cambria", 16, 0x990099, false, false));

eg.type = "input";

eg.width = 80;

eg.x = 245;

eg.y = 310;

eg.text = " 0000";

eg.setTextFormat(new TextFormat("Monotype Corsiva", 19, 0x990099, false, false));

B.type = "input";

B.width = 370;

B.height = 180;

B.x = 90;

B.y = 483;

B.multiline = true;

B.text = " ";//"Напишите вывод о проделанной работе!!!";

B.setTextFormat(new TextFormat("Monotype Corsiva", 19, 0x990099, false, false));

// создаем кнопку на листе "расчеты" для сохранения их в отчете

addChild(btn);

ToolTip.attach(btn,'<b>Подтвердите перенос в отчет\nрезультатов опытов и вывода\nо проделанной работы</b>');

btn.buttonMode = true;

btn.move(545, 610);

btn.width = 120;

btn.addEventListener(MouseEvent.CLICK, onMouseClick);

//поля для отображения в отчете

t1.width = 50;

t1.height = 50;

t1.x = 85;

t1.y = 95;

t1.text = " 0.00";

t1.setTextFormat(new TextFormat("Cambria", 16, 0x990099, false, false));

t21.width = 50;

t21.x = 85;

t21.y = 138;

t21.text = " 0.00";

t21.setTextFormat(new TextFormat("Cambria", 16, 0x990099, false, false));

n1.width = 40;

n1.x = 148;

n1.y = 95;

n1.text = " 00";

n1.setTextFormat(new TextFormat("Cambria", 16, 0x990099, false, false));

n21.width = 40;

n21.x = 148;

n21.y = 138;

n21.text = " 00";

n21.setTextFormat(new TextFormat("Cambria", 16, 0x990099, false, false));

p1.width = 40;

p1.x = 200;

p1.y = 95;

p1.text = " 000";

p1.setTextFormat(new TextFormat("Cambria", 16, 0x990099, false, false));

p21.width = 40;

p21.x = 200;

p21.y = 138;

p21.text = " 000";

p21.setTextFormat(new TextFormat("Cambria", 16, 0x990099, false, false));

ts1.type = "input";

ts1.width = 50;

ts1.x = 275;

ts1.y = 119;

ts1.text = " 000";

ts1.setTextFormat(new TextFormat("Cambria", 16, 0x990099, false, false));

Ts1.width = 50;

Ts1.x = 358;

Ts1.y = 119;

Ts1.text = " 000";

Ts1.setTextFormat(new TextFormat("Cambria", 16, 0x990099, false, false));

gs1.width = 50;

gs1.x = 442;

gs1.y = 119;

gs1.text = "0.00";

gs1.setTextFormat(new TextFormat("Cambria", 16, 0x990099, false, false));

eg1.width = 100;

eg1.x = 136;

eg1.y = 214;

eg1.text = "0000";

eg1.setTextFormat(new TextFormat("Monotype Corsiva", 19, 0x990099, false, false));

B1.width = 370;

B1.height = 180;

B1.x = 90;

B1.y = 252;

B1.multiline = true;

B1.text = " ";

B1.setTextFormat(new TextFormat("Monotype Corsiva", 19, 0x990099, false, false));

//заготовки для контента страниц

var g:MovieClip = new globe();

g.x = 150;

g.y = 80;

var comment:TextField = new TextField();

comment.autoSize = TextFieldAutoSize.CENTER;

comment.x = 100;

comment.y = 210;

comment.text = "картинка с диска,\n мувик из библиотеки\n плюс собственнно этот текст";

comment.setTextFormat(new TextFormat("Monotype Corsiva", 19, 0x990099, false, false));

comment.selectable = true;

comment.mouseEnabled = true;

//создание(определение) страниц книжки

//датапровайдеру передаем массив объектов PageContent, инициализирующих загрузку

//или создающих контент, если переданы готовые дисплейОбжекты

_book.dataProvider = [

null,//нет листа, для имитации обложки

new PageContent("обложка.swf"),

new PageContent("теория1.swf"),

new PageContent("теория2.swf"),

new PageContent("работа.swf"),

new PageContent("расчеты.swf",t,t2,n,n2,p,p2,ts,Ts,gs,eg,B,btn),

new PageContent("отчет1.swf"),

new PageContent("отчет2.swf",t1,t21,n1,n21,p1,p21,ts1,Ts1,gs1,eg1,B1),

new PageContent("теория1_конд.swf"),

new PageContent("теория2_конд.swf"),

new PageContent("кон_работа.swf"),

new PageContent("расчеты_конд.swf"),

new PageContent("отчет_конд.swf"),

new PageContent("отчет2_конд.swf"),

new PageContent("теория1_кинематика.swf"),

new PageContent("теория2_кинематика.swf"),

new PageContent("радио_работа.swf"),

new PageContent("динамика_работа.swf"),

new PageContent("проводник_работа.swf"),

new PageContent("работа_кинематика.swf"),//несуществующая картинка

new PageContent("феерверк.swf")//пустая страница

];

createControls();

addChild(_book);

//слушаем событие смены страниц (здесь только ради теста)

//_book.addEventListener(BookEvent.CHANGE_PAGE, onPageChange);

}

function settextformat() {

t1.setTextFormat(new TextFormat("Cambria", 16, 0x990099, false, false));

t21.setTextFormat(new TextFormat("Cambria", 16, 0x990099, false, false));

n1.setTextFormat(new TextFormat("Cambria", 16, 0x990099, false, false));

n21.setTextFormat(new TextFormat("Cambria", 16, 0x990099, false, false));

p1.setTextFormat(new TextFormat("Cambria", 16, 0x990099, false, false));

p21.setTextFormat(new TextFormat("Cambria", 16, 0x990099, false, false));

ts1.setTextFormat(new TextFormat("Cambria", 16, 0x990099, false, false));

Ts1.setTextFormat(new TextFormat("Cambria", 16, 0x990099, false, false));

gs1.setTextFormat(new TextFormat("Cambria", 16, 0x990099, false, false));

eg1.setTextFormat(new TextFormat("Monotype Corsiva", 19, 0x990099, false, false));

B1.setTextFormat(new TextFormat("Monotype Corsiva", 19, 0x990099, false, false));

}

function onMouseClick(event:MouseEvent) {

t1.text = t.text;

t21.text = t2.text;

n1.text = n.text;

n21.text = n2.text;

p1.text = p.text;

p21.text = p2.text;

ts1.text = ts.text;

Ts1.text = Ts.text;

gs1.text = gs.text;

eg1.text = eg.text;

B1.text = B.text;

settextformat();

}

//элемемнты управления

private function createControls():void

{

_tablo = new Label(this, 50, 315, "0");

for (var i:int = 0; i < _book.length; i+=2)

{

var but:PushButton = new PushButton(this, 80 + 20 * i, 750, i + "-" + (i + 1), onPageButClick);

but.setSize(35, 20);

}

}

//обработчик радикнопок режима

private function onRadioClick(event:Event):void

{

var rb:RadioButton = event.currentTarget as RadioButton;

_book.mode = rb.label;

}

//обработчик слайдера скрости

private function onSliderChange(event:Event):void

{

_book.speed = HUISlider(event.currentTarget).value;

}

//обработчик кнопок страниц

private function onPageButClick(event:Event):void

{

var but:PushButton = event.currentTarget as PushButton;

var label:String = but.label;

var n_p:int = parseInt(label.substr(0, label.indexOf("-")));

_book.gotoPage(n_p);

}

}

}