Petrinetwork est une bibliothèque sur ActionScript 3, qui simule le fonctionnement du réseau Petri. Conçu pour créer une animation flash interactive dans l'environnement d'entraînement hypertest
Le réseau Petri est un multiprait multi-types à double art, composé des sommets de deux types - positions et transitions interconnectées par des arcs. Les pics du même type ne peuvent pas être connectés directement. Dans les positions, les marqueurs (marqueurs) peuvent se déplacer sur le réseau peuvent être placés dans des positions.
L'événement est le fonctionnement de la transition dans laquelle les marques des positions d'entrée de cette transition se déplacent vers le week-end. Les événements se produisent instantanément, ou différemment, lorsque les conditions sont remplies.
import PetriNetManager . State ;
import PetriNetManager . StateTransition ;
import PetriNetManager . ActionResult ;
import PetriNetManager . SceneManager ;
import PetriNetManager . StatesUpdateEventHandler ;
import flash . display . DisplayObject ; var sceneMgr = new SceneManager ( ) ; var sett : Object = {
//Номера позиций
states : [ 1 , 2 , 3 , 4 , 5 ] ,
//Количество маркеров в каждой позиции
markers : [ 1 , 0 , 0 , 0 , 0 ] ,
//Массив объектов переходов
transitions : [ {
//номер перехода
id : 1 ,
//Входные позиции
inputStates : [ 1 ] ,
//Выходные позиции
outputStates : [ 2 ]
} ,
{
id : 2 ,
inputStates : [ 2 ] ,
outputStates : [ 3 ]
} ,
{
id : 3 ,
inputStates : [ 1 ] ,
outputStates : [ 5 ]
}
]
} ; sceneMgr . initFromObject ( sett ) ; helpBtn . addEventListener ( MouseEvent . CLICK , helpBtnInvoke ) ;
function helpBtnInvoke ( e : MouseEvent ) : void {
sceneMgr . makeAction ( 1 ) ;
} function statesChangedHandler ( e : StatesUpdateEventHandler ) {
for each ( var s : State in e . States ) {
trace ( s . Id + " " + s . hasMarkers ( ) ) ;
}
trace ( "-----------------------------" ) ;
//Если срабатывает первый переход
if ( e . States [ 0 ] . hasMarkers ( ) ) {
//переходим на другой фон
bg1 . gotoAndStop ( 1 ) ;
//меняем текст в навигационном окне
curStr = "Зайдите в меню HELP или нажмите CTRL+SHIFT+D" ;
}
if ( e . States [ 1 ] . hasMarkers ( ) ) {
bg1 . gotoAndStop ( 2 ) ;
curStr = "Выберите пункт Default Keymap Reference" ;
}
if ( e . States [ 2 ] . hasMarkers ( ) ) {
bg1 . gotoAndStop ( 3 ) ;
curStr = "Список со всеми горячими клавишами" ;
}
if ( e . States [ 4 ] . hasMarkers ( ) ) {
bg1 . gotoAndStop ( 4 ) ;
curStr = "Форма поиска команды" ;
}
}
sceneMgr . addEventListener ( StatesUpdateEventHandler . STATES_UPDATE_EVENT , statesChangedHandler ) ; sceneMgr . initFromJson ( net1 . json ) ;